나는이 질문에 대해 내가 원하는 바를 요약한다 : 변수의 값을 SystemVerilog의 매크로에 전달한다. 내가 원하는 예를 들어SystemVerilog에서 매크로에 변수 값을 전달하는 방법은 무엇입니까?
: 말을, 매크로없이,이 abc_X_def의 이름으로 4 개 신호는 내가 0 그래서 그들 모두를 초기화 할 :
abc_0_def = 4'b0000;
abc_1_def = 4'b0000;
abc_2_def = 4'b0000;
abc_3_def = 4'b0000;
자, 나는 문제가있는 작성한 코드 :
`define set_value(bit) abc_``bit``_def = 4'b0000
for (int i = 0; i < 4; i++) begin
`set_value(i);
end
오류가있는 abc_i_def 분명히 잘못된 신호를 발견하려고한다는 것입니다. 변수 'i'의 실제 값을 매크로에 전달할 수 있는지 궁금합니다.
'매크로 메타 프로그래밍 사용'과 동일한 작업을 수행하는 방법은 18 페이지를 참조하십시오. 나는 이것이 끔찍하다고 생각하지만 그것은 그것이 무엇인가 : http : //www.veripool.org/papers/Preproc_Good_Evil_SNUGBos10_paper.pdf –
David에게 감사드립니다. 매크로가 나를 위해 일할 수없는 이유를 적어도 이해했습니다. 당신은 당신이 localparam에 대해 말하고자하는 것을 기술하고 문장을 생성하는 예제를 줄 수 있습니까? 죄송합니다. 저는 System Verilog를 처음 접했습니다. – user2644151
또한 게시 한 문서와 관련하여 내가 알고 싶은 것은 좋았으며 정확하게하고 싶었지만 사용하지 못했습니다. 내 질문에서 언급 한 것보다 더 많은 비트로 사용하려고하기 때문에 사용할 수 없습니다. abc_X_def_Y_ghi_Z와 같은 변수가 더 많습니다. 여기서 X, Y 및 Z는 크기가 다른 변수입니다. 한계를 하드 코딩하는 것은 과도한 행동입니다. – user2644151