mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Replaces double quotes on problematic regex strings (mostly ones that have escape sequences that are easier to preserve in single quotes). Necessitates also changing single quotes to `.`, i.e match any. For some (mostly ones that only have a single escaped character, or were using `\.` to match a literal fullstop) keep the double quotes and fix the regex instead.
		
			
				
	
	
		
			142 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
logger -nowarn "Yosys has only limited support for tri-state logic at the moment. .*"
 | 
						|
logger -nowarn "Ignoring boxed module .*."
 | 
						|
 | 
						|
read_verilog <<EOT
 | 
						|
module top(input C, D, output [7:0] Q);
 | 
						|
FDRE   /*#(.INIT(0))*/ fd1(.C(C), .CE(1'b1), .D(D), .R(1'b1), .Q(Q[0]));
 | 
						|
FDSE   #(.INIT(0)) fd2(.C(C), .CE(1'b1), .D(D), .S(1'b1), .Q(Q[1]));
 | 
						|
FDCE   #(.INIT(0)) fd3(.C(C), .CE(1'b1), .D(D), .CLR(1'b1), .Q(Q[2]));
 | 
						|
FDPE   #(.INIT(0)) fd4(.C(C), .CE(1'b1), .D(D), .PRE(1'b1), .Q(Q[3]));
 | 
						|
FDRE_1 #(.INIT(0)) fd5(.C(C), .CE(1'b1), .D(D), .R(1'b1), .Q(Q[4]));
 | 
						|
FDSE_1 #(.INIT(0)) fd6(.C(C), .CE(1'b1), .D(D), .S(1'b1), .Q(Q[5]));
 | 
						|
FDCE_1 #(.INIT(0)) fd7(.C(C), .CE(1'b1), .D(D), .CLR(1'b1), .Q(Q[6]));
 | 
						|
FDPE_1 #(.INIT(0)) fd8(.C(C), .CE(1'b1), .D(D), .PRE(1'b1), .Q(Q[7]));
 | 
						|
endmodule
 | 
						|
EOT
 | 
						|
read_verilog -lib +/xilinx/cells_sim.v
 | 
						|
equiv_opt -assert -multiclock -map +/xilinx/cells_sim.v synth_xilinx -abc9 -dff -noiopad -noclkbuf
 | 
						|
design -load postopt
 | 
						|
select -assert-count 6 t:FD*
 | 
						|
select -assert-count 6 c:fd2 c:fd3 c:fd4 c:fd6 c:fd7 c:fd8
 | 
						|
 | 
						|
 | 
						|
design -reset
 | 
						|
read_verilog <<EOT
 | 
						|
module top(input C, D, output [7:0] Q);
 | 
						|
FDRE   #(.INIT(0)) fd1(.C(C), .CE(1'b0), .D(D), .R(1'b0), .Q(Q[0]));
 | 
						|
FDSE   #(.INIT(0)) fd2(.C(C), .CE(1'b0), .D(D), .S(1'b0), .Q(Q[1]));
 | 
						|
FDCE   #(.INIT(0)) fd3(.C(C), .CE(1'b0), .D(D), .CLR(1'b0), .Q(Q[2]));
 | 
						|
FDPE   #(.INIT(0)) fd4(.C(C), .CE(1'b0), .D(D), .PRE(1'b0), .Q(Q[3]));
 | 
						|
FDRE_1 /*#(.INIT(0))*/ fd5(.C(C), .CE(1'b0), .D(D), .R(1'b0), .Q(Q[4]));
 | 
						|
FDSE_1 #(.INIT(0)) fd6(.C(C), .CE(1'b0), .D(D), .S(1'b0), .Q(Q[5]));
 | 
						|
FDCE_1 #(.INIT(0)) fd7(.C(C), .CE(1'b0), .D(D), .CLR(1'b0), .Q(Q[6]));
 | 
						|
FDPE_1 #(.INIT(0)) fd8(.C(C), .CE(1'b0), .D(D), .PRE(1'b0), .Q(Q[7]));
 | 
						|
endmodule
 | 
						|
EOT
 | 
						|
read_verilog -lib +/xilinx/cells_sim.v
 | 
						|
equiv_opt -assert -multiclock -map +/xilinx/cells_sim.v synth_xilinx -abc9 -dff -noiopad -noclkbuf
 | 
						|
design -load postopt
 | 
						|
select -assert-count 4 t:FD*
 | 
						|
select -assert-count 4 c:fd3 c:fd4 c:fd7 c:fd8
 | 
						|
 | 
						|
 | 
						|
design -reset
 | 
						|
read_verilog <<EOT
 | 
						|
module top(input C, D, output [7:0] Q);
 | 
						|
FDRE   #(.INIT(1)) fd1(.C(C), .CE(1'b0), .D(D), .R(1'b0), .Q(Q[0]));
 | 
						|
FDSE   /*#(.INIT(1))*/ fd2(.C(C), .CE(1'b0), .D(D), .S(1'b0), .Q(Q[1]));
 | 
						|
FDCE   #(.INIT(1)) fd3(.C(C), .CE(1'b0), .D(D), .CLR(1'b0), .Q(Q[2]));
 | 
						|
FDPE   #(.INIT(1)) fd4(.C(C), .CE(1'b0), .D(D), .PRE(1'b0), .Q(Q[3]));
 | 
						|
FDRE_1 #(.INIT(1)) fd5(.C(C), .CE(1'b0), .D(D), .R(1'b0), .Q(Q[4]));
 | 
						|
FDSE_1 #(.INIT(1)) fd6(.C(C), .CE(1'b0), .D(D), .S(1'b0), .Q(Q[5]));
 | 
						|
FDCE_1 /*#(.INIT(1))*/ fd7(.C(C), .CE(1'b0), .D(D), .CLR(1'b0), .Q(Q[6]));
 | 
						|
FDPE_1 #(.INIT(1)) fd8(.C(C), .CE(1'b0), .D(D), .PRE(1'b0), .Q(Q[7]));
 | 
						|
endmodule
 | 
						|
EOT
 | 
						|
logger -expect warning 'Whitebox .\$paramod\\FDRE\\INIT=.*1. with \(\* abc9_flop \*\) contains a \$dff cell with non-zero initial state -- this is not supported for ABC9 sequential synthesis. Treating as a blackbox\.' 1
 | 
						|
logger -expect warning 'Whitebox .\$paramod\\FDRE_1\\INIT=.*1. with \(\* abc9_flop \*\) contains a \$dff cell with non-zero initial state -- this is not supported for ABC9 sequential synthesis. Treating as a blackbox\.' 1
 | 
						|
logger -expect warning 'Whitebox .FDSE. with \(\* abc9_flop \*\) contains a \$dff cell with non-zero initial state -- this is not supported for ABC9 sequential synthesis. Treating as a blackbox\.' 1
 | 
						|
logger -expect warning 'Whitebox .\$paramod\\FDSE_1\\INIT=.*1. with \(\* abc9_flop \*\) contains a \$dff cell with non-zero initial state -- this is not supported for ABC9 sequential synthesis. Treating as a blackbox\.' 1
 | 
						|
read_verilog -lib +/xilinx/cells_sim.v
 | 
						|
equiv_opt -assert -multiclock -map +/xilinx/cells_sim.v synth_xilinx -abc9 -dff -noiopad -noclkbuf
 | 
						|
design -load postopt
 | 
						|
select -assert-count 8 t:FD*
 | 
						|
 | 
						|
 | 
						|
design -reset
 | 
						|
read_verilog <<EOT
 | 
						|
module top(input clk, clr, pre, output reg q0 = 1'b0, output reg q1 = 1'b1);
 | 
						|
always @(posedge clk or posedge clr)
 | 
						|
    if (clr)
 | 
						|
        q0 <= 1'b0;
 | 
						|
    else
 | 
						|
        q0 <= ~q0;
 | 
						|
always @(posedge clk or posedge pre)
 | 
						|
    if (pre)
 | 
						|
        q1 <= 1'b1;
 | 
						|
    else
 | 
						|
        q1 <= ~q1;
 | 
						|
endmodule
 | 
						|
EOT
 | 
						|
proc
 | 
						|
read_verilog -lib +/xilinx/cells_sim.v
 | 
						|
equiv_opt -assert -multiclock -map +/xilinx/cells_sim.v synth_xilinx -abc9 -dff -noiopad -noclkbuf
 | 
						|
design -load postopt
 | 
						|
select -assert-count 1 t:FDCE
 | 
						|
select -assert-count 1 t:FDPE
 | 
						|
select -assert-count 2 t:INV
 | 
						|
select -assert-count 0 t:FD* t:INV %% t:* %D
 | 
						|
 | 
						|
 | 
						|
design -reset
 | 
						|
read_verilog <<EOT
 | 
						|
module top(input clk, input d, output q);
 | 
						|
reg r;
 | 
						|
always @(posedge clk) begin
 | 
						|
r <= d;
 | 
						|
end
 | 
						|
assign q = ~r;
 | 
						|
endmodule
 | 
						|
EOT
 | 
						|
proc
 | 
						|
read_verilog -lib +/xilinx/cells_sim.v
 | 
						|
equiv_opt -assert -multiclock -map +/xilinx/cells_sim.v synth_xilinx -abc9 -dff -noiopad -noclkbuf
 | 
						|
design -load postopt
 | 
						|
select -assert-count 1 t:FDRE %co w:r %i
 | 
						|
 | 
						|
 | 
						|
design -reset
 | 
						|
read_verilog <<EOT
 | 
						|
module top(input clk, input a, b, output reg q1, output q2);
 | 
						|
reg r;
 | 
						|
always @(posedge clk) begin
 | 
						|
    q1 <= a | b;
 | 
						|
    r <= ~(~a & ~b);
 | 
						|
end
 | 
						|
assign q2 = r;
 | 
						|
endmodule
 | 
						|
EOT
 | 
						|
proc
 | 
						|
read_verilog -lib +/xilinx/cells_sim.v
 | 
						|
equiv_opt -assert -multiclock -map +/xilinx/cells_sim.v synth_xilinx -abc9 -dff -noiopad -noclkbuf
 | 
						|
design -load postopt
 | 
						|
select -assert-count 1 t:FDRE %co %a w:r %i
 | 
						|
 | 
						|
 | 
						|
design -reset
 | 
						|
read_verilog <<EOT
 | 
						|
module top(input clk, input a, b, output o);
 | 
						|
reg r1, r2;
 | 
						|
always @(posedge clk) begin
 | 
						|
    r1 <= a | b;
 | 
						|
    r2 <= ~(~a & ~b);
 | 
						|
end
 | 
						|
assign o = r1 | r2;
 | 
						|
endmodule
 | 
						|
EOT
 | 
						|
proc
 | 
						|
read_verilog -lib +/xilinx/cells_sim.v
 | 
						|
equiv_opt -assert -multiclock -map +/xilinx/cells_sim.v synth_xilinx -abc9 -dff -noiopad -noclkbuf
 | 
						|
 | 
						|
 | 
						|
logger -expect-no-warnings
 |