2
다음과 같은 Verilog 코드가 있습니다. 리셋 할 때 카운터의 값을 저장하는 것이 좋습니다. 그러나, 합성 수 있는지 확실하지 않습니다 (메모리가 동기 재설정 필요). DRC violatins가 생기고 메모리, bufreadaddr, bufreadval은 모두 최적화되어 있습니다. 이것을 쓰는 다른 방법은 무엇입니까?Verilog : 리셋이 발생할 때 카운터 값 저장
module counter (clk,reset, d_out,laststoredvalue, bufreadaddr, bufreadval, resetcount) ;
input clk ,reset ;
input [5:0] resetcount;
output [15:0] d_out;
output [15:0] laststoredvalue;
input [5:0] bufreadaddr;
output [15:0] bufreadval;
reg [15:0] bufreadval;
reg [15:0] laststoredvalue;
reg [15:0] d_out;
reg [15:0] d_out_mem[63:0];
always @(negedge reset or posedge clk) begin
if (reset == 0) begin
d_out <= 16'h0000;
d_out_mem[resetcount] <= d_out;
laststoredvalue <= d_out;
end else begin
d_out <= d_out + 1'b1;
end
end
always @(bufreadaddr)
bufreadval = d_out_mem[bufreadaddr];
integer count;
initial begin
count = 0;
end
always @(posedge clk) begin
count = count + 1;
//$display(count);
end
endmodule
이 질문은 여기에서 참조되었습니다. https://danluu.com/why-hardware-development-is-hard/ –