mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	QLF_TDP36K: asymmetric simulation tests
This commit is contained in:
		
							parent
							
								
									497cd021af
								
							
						
					
					
						commit
						0d1668c1ee
					
				
					 2 changed files with 89 additions and 0 deletions
				
			
		|  | @ -152,6 +152,38 @@ sync_ram_tdp #(\\ | ||||||
| );\ | );\ | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
|  | sync_ram_sdp_wwr_submodule = """\ | ||||||
|  | sync_ram_sdp_wwr #(\\ | ||||||
|  | 	.ADDRESS_WIDTH(ADDRESS_WIDTH),\\ | ||||||
|  | 	.DATA_WIDTH(DATA_WIDTH),\\ | ||||||
|  | 	.SHIFT_VAL(SHIFT_VAL)\\ | ||||||
|  | ) uut (\\ | ||||||
|  | 	.clk_w(clk),\\ | ||||||
|  | 	.clk_r(clk),\\ | ||||||
|  | 	.write_enable(wce_a),\\ | ||||||
|  | 	.data_in(wd_a),\\ | ||||||
|  | 	.address_in_w(wa_a),\\ | ||||||
|  | 	.address_in_r(ra_a),\\ | ||||||
|  | 	.data_out(rq_a)\\ | ||||||
|  | );\ | ||||||
|  | """ | ||||||
|  | 
 | ||||||
|  | sync_ram_sdp_wrr_submodule = """\ | ||||||
|  | sync_ram_sdp_wrr #(\\ | ||||||
|  | 	.ADDRESS_WIDTH(ADDRESS_WIDTH),\\ | ||||||
|  | 	.DATA_WIDTH(DATA_WIDTH),\\ | ||||||
|  | 	.SHIFT_VAL(SHIFT_VAL)\\ | ||||||
|  | ) uut (\\ | ||||||
|  | 	.clk_w(clk),\\ | ||||||
|  | 	.clk_r(clk),\\ | ||||||
|  | 	.write_enable(wce_a),\\ | ||||||
|  | 	.data_in(wd_a),\\ | ||||||
|  | 	.address_in_w(wa_a),\\ | ||||||
|  | 	.address_in_r(ra_a),\\ | ||||||
|  | 	.data_out(rq_a)\\ | ||||||
|  | );\ | ||||||
|  | """ | ||||||
|  | 
 | ||||||
| @dataclass | @dataclass | ||||||
| class TestClass: | class TestClass: | ||||||
|     params: dict[str, int] |     params: dict[str, int] | ||||||
|  | @ -250,6 +282,58 @@ sim_tests: list[TestClass] = [ | ||||||
|             {                               "rq_b": 0xa5a5a5a5}, |             {                               "rq_b": 0xa5a5a5a5}, | ||||||
|         ] |         ] | ||||||
|     ), |     ), | ||||||
|  |     TestClass( # 2x wide write | ||||||
|  |         params={"ADDRESS_WIDTH": 11, "DATA_WIDTH": 18, "SHIFT_VAL": 1}, | ||||||
|  |         top="sync_ram_sdp_wwr", | ||||||
|  |         assertions=[], | ||||||
|  |         test_steps=[ | ||||||
|  |             {"wce_a": 1, "wa_a": 0b0000000001, "wd_a": 0xdeadbeef}, | ||||||
|  |             {"rce_a": 0, "ra_a": 0b00000000010}, | ||||||
|  |             {"rq_a": 0xdead}, | ||||||
|  |             {"rce_a": 0, "ra_a": 0b00000000011}, | ||||||
|  |             {"rq_a": 0xbeef}, | ||||||
|  |         ] | ||||||
|  |     ), | ||||||
|  |     TestClass( # 4x wide write | ||||||
|  |         params={"ADDRESS_WIDTH": 10, "DATA_WIDTH": 8, "SHIFT_VAL": 2}, | ||||||
|  |         top="sync_ram_sdp_wwr", | ||||||
|  |         assertions=[], | ||||||
|  |         test_steps=[ | ||||||
|  |             {"wce_a": 1, "wa_a": 0b000100001, "wd_a": 0xdeadbeef}, | ||||||
|  |             {"rce_a": 0, "ra_a": 0b00010000100}, | ||||||
|  |             {"rq_a": 0xde}, | ||||||
|  |             {"rce_a": 0, "ra_a": 0b00010000101}, | ||||||
|  |             {"rq_a": 0xad}, | ||||||
|  |             {"rce_a": 0, "ra_a": 0b00010000110}, | ||||||
|  |             {"rq_a": 0xbe}, | ||||||
|  |             {"rce_a": 0, "ra_a": 0b00010000111}, | ||||||
|  |             {"rq_a": 0xef}, | ||||||
|  |         ] | ||||||
|  |     ), | ||||||
|  |     TestClass( # 2x wide read | ||||||
|  |         params={"ADDRESS_WIDTH": 11, "DATA_WIDTH": 18, "SHIFT_VAL": 1}, | ||||||
|  |         top="sync_ram_sdp_wrr", | ||||||
|  |         assertions=[], | ||||||
|  |         test_steps=[ | ||||||
|  |             {"wce_a": 1, "wa_a": 0b00000000010, "wd_a": 0xdead}, | ||||||
|  |             {"wce_a": 1, "wa_a": 0b00000000011, "wd_a": 0xbeef}, | ||||||
|  |             {"rce_a": 0, "ra_a": 0b0000000001}, | ||||||
|  |             {"rq_a": 0xdeadbeef}, | ||||||
|  |         ] | ||||||
|  |     ), | ||||||
|  |     TestClass( # 4x wide read | ||||||
|  |         params={"ADDRESS_WIDTH": 10, "DATA_WIDTH": 8, "SHIFT_VAL": 2}, | ||||||
|  |         top="sync_ram_sdp_wrr", | ||||||
|  |         assertions=[], | ||||||
|  |         test_steps=[ | ||||||
|  |             {"wce_a": 1, "wa_a": 0b00010000100, "wd_a": 0xde}, | ||||||
|  |             {"wce_a": 1, "wa_a": 0b00010000101, "wd_a": 0xad}, | ||||||
|  |             {"wce_a": 1, "wa_a": 0b00010000110, "wd_a": 0xbe}, | ||||||
|  |             {"wce_a": 1, "wa_a": 0b00010000111, "wd_a": 0xef}, | ||||||
|  |             {"rce_a": 0, "ra_a": 0b000100001}, | ||||||
|  |             {"rq_a": 0xdeadbeef}, | ||||||
|  |         ] | ||||||
|  |     ), | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| for (params, top, assertions) in blockram_tests: | for (params, top, assertions) in blockram_tests: | ||||||
|  | @ -308,6 +392,10 @@ for sim_test in sim_tests: | ||||||
|                 uut_submodule = sync_ram_sdp_submodule |                 uut_submodule = sync_ram_sdp_submodule | ||||||
|             elif top == "sync_ram_tdp": |             elif top == "sync_ram_tdp": | ||||||
|                 uut_submodule = sync_ram_tdp_submodule |                 uut_submodule = sync_ram_tdp_submodule | ||||||
|  |             elif top == "sync_ram_sdp_wwr": | ||||||
|  |                 uut_submodule = sync_ram_sdp_wwr_submodule | ||||||
|  |             elif top == "sync_ram_sdp_wrr": | ||||||
|  |                 uut_submodule = sync_ram_sdp_wrr_submodule | ||||||
|             else: |             else: | ||||||
|                 raise NotImplementedError(f"missing submodule header for {top}") |                 raise NotImplementedError(f"missing submodule header for {top}") | ||||||
|             mem_test_vector = "" |             mem_test_vector = "" | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ module TB(input clk); | ||||||
| parameter ADDRESS_WIDTH = 10; | parameter ADDRESS_WIDTH = 10; | ||||||
| parameter DATA_WIDTH = 36; | parameter DATA_WIDTH = 36; | ||||||
| parameter VECTORLEN = 16; | parameter VECTORLEN = 16; | ||||||
|  | parameter SHIFT_VAL = 0; | ||||||
| localparam MAX_WIDTH = 36; | localparam MAX_WIDTH = 36; | ||||||
| 
 | 
 | ||||||
| reg rce_a_testvector [VECTORLEN-1:0]; | reg rce_a_testvector [VECTORLEN-1:0]; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue