efabless / caravel_user_project

https://caravel-user-project.readthedocs.io
Apache License 2.0
174 stars 326 forks source link

user_id_programming is flattened during synthesis #264

Closed d-m-bailey closed 1 year ago

d-m-bailey commented 1 year ago

Looks like user_id_programming is being flattened during caravel_core synthesis. This will result in always returning the default value 00000000.

The new caravel with caravel_core are missing the variable user_id_programming implementation in the mag/*, caravel/mag/*, caravel/verilog/gl/*, verilog/gl/* directories and the final gds/caravel.gds.

There is a reference to user_id_programming in caravel/verilog/rtl/caravel_core.v but it looks like it has been flattened in caravel/verilog/gl/caravel_core.v.

caravel/verilog/rtl/caravel_core.v

    user_id_programming #(
        .USER_PROJECT_ID(USER_PROJECT_ID)
    ) user_id_value (
        `ifdef USE_POWER_PINS
                .VPWR(vccd),
                .VGND(vssd),
        `endif
        .mask_rev(mask_rev)
    );  
...
    housekeeping housekeeping (
...
        .mask_rev_in(mask_rev),

caravel/verilog/gl/caravel_core.v

sky130_fd_sc_hd__conb_1 housekeeping_1445 (.VGND(vssd),
    .VNB(vssd),
    .VPB(vccd), 
    .VPWR(vccd),
    .LO(net10255));
...
 housekeeping housekeeping (.VGND(vssd),
...
    .mask_rev_in({net10255,
mo-hosni commented 1 year ago

This was flattened by mistake. I am working on fixing that.

marwaneltoukhy commented 1 year ago

Fixed in PR #439