mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-30 19:22:31 +00:00 
			
		
		
		
	Added $_SR_[PN][PN]_, $_DFFSR_[PN][PN][PN]_, $_DLATCH_[PN]_
This commit is contained in:
		
							parent
							
								
									5998c101a4
								
							
						
					
					
						commit
						e0f693cbb0
					
				
					 3 changed files with 181 additions and 0 deletions
				
			
		|  | @ -573,6 +573,7 @@ bool dump_cell_expr(FILE *f, std::string indent, RTLIL::Cell *cell) | |||
| 		return true; | ||||
| 	} | ||||
| 
 | ||||
| 	// FIXME: $_SR_[PN][PN]_, $_DFFSR_[PN][PN][PN]_, $_DLATCH_[PN]_
 | ||||
| 	// FIXME: $sr, $dffsr, $dlatch, $memrd, $memwr, $mem, $fsm
 | ||||
| 
 | ||||
| 	return false; | ||||
|  |  | |||
|  | @ -119,6 +119,10 @@ struct CellTypes | |||
| 
 | ||||
| 	void setup_stdcells_mem() | ||||
| 	{ | ||||
| 		cell_types.insert("$_SR_NN_"); | ||||
| 		cell_types.insert("$_SR_NP_"); | ||||
| 		cell_types.insert("$_SR_PN_"); | ||||
| 		cell_types.insert("$_SR_PP_"); | ||||
| 		cell_types.insert("$_DFF_N_"); | ||||
| 		cell_types.insert("$_DFF_P_"); | ||||
| 		cell_types.insert("$_DFF_NN0_"); | ||||
|  | @ -129,6 +133,16 @@ struct CellTypes | |||
| 		cell_types.insert("$_DFF_PN1_"); | ||||
| 		cell_types.insert("$_DFF_PP0_"); | ||||
| 		cell_types.insert("$_DFF_PP1_"); | ||||
| 		cell_types.insert("$_DFFSR_NNN_"); | ||||
| 		cell_types.insert("$_DFFSR_NNP_"); | ||||
| 		cell_types.insert("$_DFFSR_NPN_"); | ||||
| 		cell_types.insert("$_DFFSR_NPP_"); | ||||
| 		cell_types.insert("$_DFFSR_PNN_"); | ||||
| 		cell_types.insert("$_DFFSR_PNP_"); | ||||
| 		cell_types.insert("$_DFFSR_PPN_"); | ||||
| 		cell_types.insert("$_DFFSR_PPP_"); | ||||
| 		cell_types.insert("$_DLATCH_N_"); | ||||
| 		cell_types.insert("$_DLATCH_P_"); | ||||
| 	} | ||||
| 
 | ||||
| 	void clear() | ||||
|  |  | |||
|  | @ -60,6 +60,50 @@ always @* begin | |||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_SR_NN_ (S, R, Q); | ||||
| input S, R; | ||||
| output reg Q; | ||||
| always @(negedge S, negedge R) begin | ||||
| 	if (R == 0) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 0) | ||||
| 		Q <= 1; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_SR_NP_ (S, R, Q); | ||||
| input S, R; | ||||
| output reg Q; | ||||
| always @(negedge S, posedge R) begin | ||||
| 	if (R == 1) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 0) | ||||
| 		Q <= 1; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_SR_PN_ (S, R, Q); | ||||
| input S, R; | ||||
| output reg Q; | ||||
| always @(posedge S, negedge R) begin | ||||
| 	if (R == 0) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 1) | ||||
| 		Q <= 1; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_SR_PP_ (S, R, Q); | ||||
| input S, R; | ||||
| output reg Q; | ||||
| always @(posedge S, posedge R) begin | ||||
| 	if (R == 1) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 1) | ||||
| 		Q <= 1; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFF_N_ (D, Q, C); | ||||
| input D, C; | ||||
| output reg Q; | ||||
|  | @ -164,3 +208,125 @@ always @(posedge C or posedge R) begin | |||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFFSR_NNN_ (C, S, R, D, Q); | ||||
| input C, S, R, D; | ||||
| output reg Q; | ||||
| always @(negedge C, negedge S, negedge R) begin | ||||
| 	if (R == 0) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 0) | ||||
| 		Q <= 1; | ||||
| 	else | ||||
| 		Q <= D; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFFSR_NNP_ (C, S, R, D, Q); | ||||
| input C, S, R, D; | ||||
| output reg Q; | ||||
| always @(negedge C, negedge S, posedge R) begin | ||||
| 	if (R == 1) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 0) | ||||
| 		Q <= 1; | ||||
| 	else | ||||
| 		Q <= D; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFFSR_NPN_ (C, S, R, D, Q); | ||||
| input C, S, R, D; | ||||
| output reg Q; | ||||
| always @(negedge C, posedge S, negedge R) begin | ||||
| 	if (R == 0) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 1) | ||||
| 		Q <= 1; | ||||
| 	else | ||||
| 		Q <= D; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFFSR_NPP_ (C, S, R, D, Q); | ||||
| input C, S, R, D; | ||||
| output reg Q; | ||||
| always @(negedge C, posedge S, posedge R) begin | ||||
| 	if (R == 1) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 1) | ||||
| 		Q <= 1; | ||||
| 	else | ||||
| 		Q <= D; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFFSR_PNN_ (C, S, R, D, Q); | ||||
| input C, S, R, D; | ||||
| output reg Q; | ||||
| always @(posedge C, negedge S, negedge R) begin | ||||
| 	if (R == 0) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 0) | ||||
| 		Q <= 1; | ||||
| 	else | ||||
| 		Q <= D; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFFSR_PNP_ (C, S, R, D, Q); | ||||
| input C, S, R, D; | ||||
| output reg Q; | ||||
| always @(posedge C, negedge S, posedge R) begin | ||||
| 	if (R == 1) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 0) | ||||
| 		Q <= 1; | ||||
| 	else | ||||
| 		Q <= D; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFFSR_PPN_ (C, S, R, D, Q); | ||||
| input C, S, R, D; | ||||
| output reg Q; | ||||
| always @(posedge C, posedge S, negedge R) begin | ||||
| 	if (R == 0) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 1) | ||||
| 		Q <= 1; | ||||
| 	else | ||||
| 		Q <= D; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFFSR_PPP_ (C, S, R, D, Q); | ||||
| input C, S, R, D; | ||||
| output reg Q; | ||||
| always @(posedge C, posedge S, posedge R) begin | ||||
| 	if (R == 1) | ||||
| 		Q <= 0; | ||||
| 	else if (S == 1) | ||||
| 		Q <= 1; | ||||
| 	else | ||||
| 		Q <= D; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DLATCH_N_ (E, D, Q); | ||||
| input E, D; | ||||
| output reg Q; | ||||
| always @* begin | ||||
| 	if (E == 0) | ||||
| 		Q <= D; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DLATCH_P_ (E, D, Q); | ||||
| input E, D; | ||||
| output reg Q; | ||||
| always @* begin | ||||
| 	if (E == 1) | ||||
| 		Q <= D; | ||||
| end | ||||
| endmodule | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue