| `timescale 1 ns/1 ps |
| module sram(CSB,WRB,ABUS,DBUS); |
| |
| input CSB; // active low chip select |
| input WRB; // active low write control |
| input [11:0] ABUS; // 12-bit address bus |
| inout [7:0] DBUS; // 8-bit data bus |
| |
| `pragma protect begin |
| reg [7:0] DBUS_driver; |
| wire [7:0] DBUS = DBUS_driver; |
| reg [7:0] ram[0:4095]; // memory cells |
| |
| integer i; |
| initial // initialize all RAM cells to 0 at startup |
| begin |
| DBUS_driver = 8'bzzzzzzzz; |
| for (i=0; i < 4095; i = i + 1) |
| ram[i] = 0; |
| end |
| |
| specify |
| $setup(ABUS,posedge WRB,10); |
| endspecify |
| |
| always @(CSB or WRB or ABUS) |
| begin |
| if (CSB == 1'b0) |
| begin |
| if (WRB == 1'b0) //start to sram, data will be latched in on |
| //rising edge of CSB or WRB |
| begin |
| DBUS_driver <= #10 8'bzzzzzzzz; |
| @(posedge CSB or posedge WRB); |
| $display($time," Writing %m ABUS=%h DATA=%h",ABUS,DBUS); |
| ram[ABUS] = DBUS; |
| end |
| else if (WRB == 1'b1) //reading from sram (data becomes valid after 10ns) |
| begin |
| #10 DBUS_driver = ram[ABUS]; |
| $display($time," Reading %m ABUS=%h DATA=%h",ABUS,DBUS_driver); |
| end |
| end |
| else //sram unselected, stop driving bus after 10ns |
| begin |
| DBUS_driver <= #10 8'bzzzzzzzz; |
| end |
| end |
| `pragma protect end |
| endmodule |
| |
| `protected |
| module secret (a, b); |
| input a; |
| output b; |
| `pragma protect encoding=(enctype="raw") |
| `pragma protect data_method="x-caesar", data_keyname="rot13", begin |
| `pragma protect runtime_license=(library="lic.so",feature="runSecret",entry="chk", match=42) |
| reg b; |
| initial |
| begin |
| b = 0; |
| end |
| always |
| begin |
| #5 b = a; |
| end |
| `pragma protect end |
| endmodule // secret |
| `endprotected |
| |
| |
| `timescale 1 ns/1 ps |
| module sram(CSB,WRB,ABUS,DBUS); |
| |
| input CSB; // active low chip select |
| input WRB; // active low write control |
| input [11:0] ABUS; // 12-bit address bus |
| inout [7:0] DBUS; // 8-bit data bus |
| |
| `pragma protect begin_protected |
| `pragma protect encrypt_agent = "SynaptiCAD VeriLogger Extreme" |
| `pragma protect encrypt_agent_info = "13.20a" |
| `pragma protect data_method = "aes128-cbc" |
| `pragma protect key_keyowner = "SynaptiCAD" |
| `pragma protect key_keyname = "syncad", key_method = "rsa" |
| `pragma protect key_block encoding = (enctype = "base64") |
| K0c+W1GDd9YcMBiX3ZqvpyTdb9sTWK06w75CLxQWVrmc3L9rzWMKgZ8vZhFcBsMT |
| t9K7aZTd7cJidH5kbBZbCRAZmn1xvTgmkTY7OZYtejMKStrp2bweOCxNgujIrPqo |
| S7Sn8oFlbG9tPn7jMCdKpyWg+20EH74G9ss7MXAJey8= |
| `pragma protect data_block encoding = (enctype = "base64", bytes = 1059) |
| Y1XAstZb24qy35cVbs13JwZp8GncAXhU4FpR2dX1rBlg0zECK0A1CNN6sPhox8ty |
| ZJZucCjN8EE5cbAhhw16W230HmPtWM8mQu5PwIUN/Te5Cd9CJSjIGvgJWFqJStUk |
| a+YBiWOT3cYXjh15krCRpeZvvqdRwvfa+yY57UeLyggomvqPScSGtmnS3S+5hQur |
| ... |
| yP4QT/S4ATdx2eku9kx0Sew9EVMCA69huZN1ZIfpsKQXPMvIb/DSZnsnZhlQicCK |
| wqPfzxcOB1x9OK5yvgaxUf6XVvW2IFk2+kLqwL5Uc5IT/BF1fRmQQh63Bo/XA6Eu |
| M6sxuyIlXqvHkcZROqkyg52e/pq6yaVd0JvXkQBlaIdaa5Ebu4WkBWkPtk368KIc |
| 2HEBVaus9ZQyGYVleOZbQA== |
| `pragma protect end_protected |
| `pragma reset protect |
| endmodule |