read_verilog -icells <<EOT module \$__XILINX_SHREG_ (input C, input D, input [31:0] L, input E, output Q, output SO); parameter DEPTH = 1; parameter [DEPTH-1:0] INIT = 0; parameter CLKPOL = 1; parameter ENPOL = 2; wire pos_clk = C == CLKPOL; reg pos_en; always @(E) if (ENPOL == 2) pos_en = 1'b1; else pos_en = (E == ENPOL[0]); reg [DEPTH-1:0] r; always @(posedge pos_clk) if (pos_en) r <= {r[DEPTH-2:0], D}; assign Q = r[L]; assign SO = r[DEPTH-1]; endmodule EOT read_verilog +/xilinx/cells_sim.v proc design -save model test_pmgen -generate xilinx_srl.fixed hierarchy -top pmtest_xilinx_srl_pm_fixed flatten; opt_clean design -save gold xilinx_srl -fixed techmap -autoproc -map %model design -stash gate design -copy-from gold -as gold pmtest_xilinx_srl_pm_fixed design -copy-from gate -as gate pmtest_xilinx_srl_pm_fixed dff2dffe -unmap # sat does not support flops-with-enable yet miter -equiv -flatten -make_assert gold gate miter sat -set-init-zero -seq 5 -verify -prove-asserts miter design -load model test_pmgen -generate xilinx_srl.variable hierarchy -top pmtest_xilinx_srl_pm_variable flatten; opt_clean design -save gold xilinx_srl -variable techmap -autoproc -map %model design -stash gate design -copy-from gold -as gold pmtest_xilinx_srl_pm_variable design -copy-from gate -as gate pmtest_xilinx_srl_pm_variable dff2dffe -unmap # sat does not support flops-with-enable yet miter -equiv -flatten -make_assert gold gate miter sat -set-init-zero -seq 5 -verify -prove-asserts miter