B-Lang-org/bsc

bsc does not update generated verilog/sim when BSV preprocessor macros changed

Aberta

#290 aberto em 8 de jan. de 2021

 (1 comentário) (0 reação) (0 responsável)Haskell (178 forks)batch import
good first issue

Métricas do repositório

Stars
 (1.108 estrelas)
Métricas de merge de PR
 (Mesclagem média 17d 1h) (18 fundiu PRs em 30d)

Description

package A;

module mkA();
`ifdef MY_MACRO
// behavior 1
rule behavior_1;
$display("behavior 1");
endrule
`else
// behavior 2
rule behavior_2;
$display("behavior 2");
endrule
`endif
endmodule
endpackage

If I first run

bsc -verilog -g mkA -D MY_MACRO  A.bsv

the generated verilog is based on the code in "behavior 1" block. But then, if I subsequently run:

bsc -u -verilog -g mkA A.bsv

The module is not recompiled and the Verilog is still based on "behavior 1" block. I expect bsc to analyze the module again and re-generate the verilog based on "behavior 2".

I need to manually remove the .bo files and rerun bsc to get the expected behavior.

Guia do colaborador