efabless / caravel

Caravel is a standard SoC harness with on chip resources to control and read/write operations from a user-dedicated space.
https://caravel-harness.readthedocs.io/
Apache License 2.0
296 stars 69 forks source link

make ship fails with certain user ids #426

Closed d-m-bailey closed 1 year ago

d-m-bailey commented 1 year ago
File /home/user/mpw-9/caravel_user_project3/mag/hexdigits/alpha_C.mag couldn't be read
Cell alpha_C is unavailable.  It could not be expanded.
File /home/user/mpw-9/caravel_user_project3/mag/hexdigits/alpha_D.mag couldn't be read
Cell alpha_D is unavailable.  It could not be expanded.
File /home/user/mpw-9/caravel_user_project3/mag/hexdigits/alpha_E.mag couldn't be read
Cell alpha_E is unavailable.  It could not be expanded.
File /home/user/mpw-9/caravel_user_project3/mag/hexdigits/alpha_F.mag couldn't be read
Cell alpha_F is unavailable.  It could not be expanded.
d-m-bailey commented 1 year ago

Looks like it's the last 2 digits of a 8 unique digit string. Using 01234567, I get an error with 6 and 7. Using 76543210, I get an error with 0 and 1. Using 76543000 works.

RTimothyEdwards commented 1 year ago

Isn't it incorrect to be looking in the user project directory for the hexdigits subdirectory from caravel? That should be pointing to the base caravel repository.

d-m-bailey commented 1 year ago

I believe it's read with -dereference and the first 6 unique digits work.

Here's the build command

random seed 1985229328;
drc off; 
crashbackups stop;
addpath hexdigits; 
addpath /home/kanobailey/mpw-9/caravel_user_project3/caravel/mag;
addpath /home/kanobailey/mpw-9/caravel_user_project3/mag;
addpath /home/kanobailey/mpw-9/caravel_user_project3/mgmt_core_wrapper/mag;
load user_project_wrapper; 
property LEFview true; 
property GDS_FILE /home/kanobailey/mpw-9/caravel_user_project3/gds/user_project_wrapper.gds;
property GDS_START 0; 
load /home/kanobailey/mpw-9/caravel_user_project3/mag/user_id_programming;
load /home/kanobailey/mpw-9/caravel_user_project3/mag/user_id_textblock;
load /home/kanobailey/mpw-9/caravel_user_project3/caravel/maglef/simple_por;
load /home/kanobailey/mpw-9/caravel_user_project3/mag/caravel -dereference;
select top cell; 
expand;
cif *hier write disable; 
cif *array write disable; 
gds write /home/kanobailey/mpw-9/caravel_user_project3/gds/caravel.gds;
quit -noprompt;

and build log (after deleting rects counts and Scaled messages).

Magic 8.3 revision 373 - Compiled on Wed Mar  1 20:23:37 PST 2023.
Starting magic under Tcl interpreter
Using the terminal as the console.
Using NULL graphics device.
Processing system .magicrc file
Sourcing design .magicrc for technology sky130A ...
2 Magic internal units = 1 Lambda
Input style sky130(): scaleFactor=2, multiplier=2
The following types are not handled by extraction and will be treated as non-electrical types:
    ubm
Loading sky130A Device Generator Menu ...
Loading "/home/user/mpw-9/caravel_user_project3/mag/mag2gds_caravel.tcl" from command line. 
Processing timestamp mismatches: user_id_textblockWarning:  Parent cell lists instance of "chip_io" at bad file path /home/user/mpw-9/caravel_user_project3/mag/chip_io.mag.
The cell exists in the search paths at ../mag/chip_io.mag.
The discovered version will be used.
, chip_ioWarning:  Parent cell lists instance of "open_source" at bad file path /home/user/mpw-9/caravel_user_project3/mag/open_source.mag.
The cell exists in the search paths at ../mag/open_source.mag.
The discovered version will be used.
, open_sourceWarning:  Parent cell lists instance of "copyright_block" at bad file path /home/user/mpw-9/caravel_user_project3/mag/copyright_block.mag.
The cell exists in the search paths at ../mag/copyright_block.mag.
The discovered version will be used.
, copyright_blockWarning:  Parent cell lists instance of "caravel_core" at bad file path /home/user/mpw-9/caravel_user_project3/mag/caravel_core.mag.
The cell exists in the search paths at ../mag/caravel_core.mag.
The discovered version will be used.
Duplicate cell in caravel_core:  Instance of cell simple_por is from path ../mag but cell was previously read from /home/user/mpw-9/caravel_user_project3/caravel/maglef.
Cell name conflict:  Renaming original cell to simple_por#0.
Warning:  Renaming read-only cell "simple_por"
Read-only status will be revoked and GDS file pointer removed.
, caravel_core, spare_logic_block, sky130_fd_sc_hd__conb_1, sky130_fd_sc_hd__tapvpwrvgnd_1, sky130_fd_sc_hd__decap_3, sky130_fd_sc_hd__fill_2, sky130_fd_sc_hd__decap_8, sky130_fd_sc_hd__decap_4, sky130_fd_sc_hd__fill_1, sky130_fd_sc_hd__decap_6Warning:  Parent cell lists instance of "RAM128" at bad file path ../mag/RAM128.mag.
The cell exists in the search paths at /home/user/mpw-9/caravel_user_project3/mgmt_core_wrapper/mag/RAM128.mag.
The discovered version will be used.
, caravel_clockingWarning:  Parent cell lists instance of "caravel_motto" at bad file path /home/user/mpw-9/caravel_user_project3/mag/caravel_motto.mag.
The cell exists in the search paths at ../mag/caravel_motto.mag.
The discovered version will be used.
, caravel_mottoWarning:  Parent cell lists instance of "caravel_logo" at bad file path /home/user/mpw-9/caravel_user_project3/mag/caravel_logo.mag.
The cell exists in the search paths at ../mag/caravel_logo.mag.
The discovered version will be used.
, caravel_logo.
Warning:  Dereferenced cell "sky130_fd_pr__res_xhigh_po_0p69_S5N9F3" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__res_xhigh_po_0p69_S5N9F3.
Warning:  Dereferenced cell "sky130_fd_pr__pfet_g5v0d10v5_ZEUEFZ" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__pfet_g5v0d10v5_ZEUEFZ.
Warning:  Dereferenced cell "sky130_fd_pr__pfet_g5v0d10v5_YUHPXE" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__pfet_g5v0d10v5_YUHPXE.
Warning:  Dereferenced cell "sky130_fd_pr__pfet_g5v0d10v5_YUHPBG" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__pfet_g5v0d10v5_YUHPBG.
Warning:  Dereferenced cell "sky130_fd_pr__pfet_g5v0d10v5_YEUEBV" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__pfet_g5v0d10v5_YEUEBV.
Warning:  Dereferenced cell "sky130_fd_pr__pfet_g5v0d10v5_3YBPVB" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__pfet_g5v0d10v5_3YBPVB.
Warning:  Dereferenced cell "sky130_fd_pr__nfet_g5v0d10v5_ZK8HQC" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__nfet_g5v0d10v5_ZK8HQC.
Warning:  Dereferenced cell "sky130_fd_pr__nfet_g5v0d10v5_TGFUGS" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__nfet_g5v0d10v5_TGFUGS.
Warning:  Dereferenced cell "sky130_fd_pr__nfet_g5v0d10v5_PKVMTM" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__nfet_g5v0d10v5_PKVMTM.
Warning:  Dereferenced cell "sky130_fd_pr__cap_mim_m3_2_W5U4AW" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__cap_mim_m3_2_W5U4AW.
Warning:  Dereferenced cell "sky130_fd_pr__cap_mim_m3_1_WRT4AW" not found in search paths;  using original location ../mag/primitives/sky130_fd_pr__cap_mim_m3_1_WRT4AW.
File /home/user/mpw-9/caravel_user_project3/mag/hexdigits/alpha_1.mag couldn't be read
Cell alpha_1 is unavailable.  It could not be expanded.
File /home/user/mpw-9/caravel_user_project3/mag/hexdigits/alpha_0.mag couldn't be read
Cell alpha_0 is unavailable.  It could not be expanded.
Processing timestamp mismatches: alpha_2, alpha_3, alpha_4, alpha_5, alpha_6, alpha_7, sky130_ef_io__vccd_lvc_clamped3_pad, sky130_ef_io__vssd_lvc_clamped3_pad, chip_io_gpio_connects, sky130_ef_io__vddio_hvc_clamped_pad, sky130_ef_io__disconnect_vdda_slice_5um, sky130_ef_io__vccd_lvc_clamped_pad, sky130_ef_io__vdda_hvc_clamped_pad, sky130_ef_io__vssio_hvc_clamped_pad, sky130_ef_io__vssd_lvc_clamped_pad, sky130_ef_io__gpiov2_pad_wrapped, sky130_fd_sc_hd__fill_8, sky130_fd_sc_hd__fill_4, sky130_fd_sc_hd__buf_16, constant_block, sky130_fd_sc_hd__conb_1, sky130_fd_sc_hd__tapvpwrvgnd_1, sky130_fd_sc_hd__fill_1, sky130_fd_sc_hd__fill_2, sky130_fd_io__top_xres4v2, sky130_ef_io__vssa_hvc_clamped_pad, sky130_ef_io__com_bus_slice_10um, sky130_ef_io__com_bus_slice_5um, sky130_ef_io__com_bus_slice_1um, sky130_ef_io__connect_vcchib_vccd_and_vswitch_vddio_slice_20um, sky130_ef_io__corner_pad, sky130_ef_io__com_bus_slice_20um, sky130_fd_sc_hd__clkinv_16, sky130_fd_sc_hd__o32ai_4, sky130_fd_sc_hd__inv_16, sky130_fd_sc_hd__inv_12, sky130_fd_sc_hd__o2bb2ai_4, sky130_fd_sc_hd__a2bb2o_4, sky130_fd_sc_hd__nor4b_4, sky130_fd_sc_hd__o311ai_4, sky130_fd_sc_hd__a41o_4, sky130_fd_sc_hd__nand4bb_4, sky130_fd_sc_hd__o21bai_4, sky130_fd_sc_hd__o41ai_4, sky130_fd_sc_hd__a221oi_4, sky130_fd_sc_hd__a32oi_4, sky130_fd_sc_hd__o311a_4, sky130_fd_sc_hd__nand4b_2, sky130_fd_sc_hd__o41ai_2, sky130_fd_sc_hd__o41a_4, sky130_fd_sc_hd__a31oi_2, sky130_fd_sc_hd__nand4bb_2, sky130_fd_sc_hd__o41a_2, sky130_fd_sc_hd__a2111o_4, sky130_fd_sc_hd__a32o_4, sky130_fd_sc_hd__a311o_4, sky130_fd_sc_hd__a2111oi_2, sky130_fd_sc_hd__o2111a_4, sky130_fd_sc_hd__o2111ai_4, sky130_fd_sc_hd__o211ai_2, sky130_fd_sc_hd__o2111a_2, sky130_fd_sc_hd__a311oi_4, sky130_fd_sc_hd__a211oi_4, sky130_fd_sc_hd__a41oi_4, sky130_fd_sc_hd__a31o_4, sky130_fd_sc_hd__a21oi_4, sky130_fd_sc_hd__o311a_2, sky130_fd_sc_hd__a2bb2o_2, sky130_fd_sc_hd__o21ba_4, sky130_fd_sc_hd__o221ai_2, sky130_fd_sc_hd__o22ai_4, sky130_fd_sc_hd__o22a_2, sky130_fd_sc_hd__o2bb2ai_2, sky130_fd_sc_hd__o2bb2a_2, sky130_fd_sc_hd__a311oi_2, sky130_fd_sc_hd__o32a_2, sky130_fd_sc_hd__o21bai_2, sky130_fd_sc_hd__a311o_2, sky130_fd_sc_hd__xor2_2, sky130_fd_sc_hd__dfxtp_4, sky130_fd_sc_hd__dfxtp_2, sky130_fd_sc_hd__dfbbn_2, sky130_fd_sc_hd__macro_sparecell, sky130_fd_sc_hd__bufbuf_16, sky130_fd_sc_hd__clkinv_8, sky130_fd_sc_hd__or2_2, sky130_fd_sc_hd__einvp_2, sky130_fd_sc_hd__einvn_8, sky130_fd_sc_hd__einvn_4, sky130_fd_sc_hd__clkinv_1, sky130_fd_sc_hd__einvp_1, sky130_fd_sc_hd__clkdlybuf4s15_2, sky130_fd_sc_hd__clkdlybuf4s18_2, sky130_fd_sc_hd__inv_8, sky130_fd_sc_hd__dfbbp_1, sky130_fd_sc_hd__nor4b_2, sky130_fd_sc_hd__ebufn_2, sky130_fd_sc_hd__dlxtp_1, sky130_fd_sc_hd__dlclkp_1, sky130_fd_sc_hd__mux4_1, sky130_fd_sc_hvl__diode_2, sky130_fd_sc_hvl__decap_4, sky130_fd_sc_hvl__decap_8, sky130_fd_sc_hvl__buf_8, sky130_fd_sc_hvl__fill_4, sky130_fd_sc_hvl__inv_8, sky130_fd_sc_hvl__schmittbuf_1, sky130_fd_sc_hvl__conb_1, sky130_fd_sc_hd__inv_6, sky130_fd_sc_hd__a221oi_2, sky130_fd_sc_hd__a221o_4, sky130_fd_sc_hd__a32o_2, sky130_fd_sc_hd__and4b_4, sky130_fd_sc_hd__xor2_1, sky130_fd_sc_hd__a2111oi_4, sky130_fd_sc_hd__nand4b_4, sky130_fd_sc_hd__o22ai_2, sky130_fd_sc_hd__o32ai_2, sky130_fd_sc_hd__mux2_8, sky130_fd_sc_hd__mux2_4, sky130_fd_sc_hd__mux2_2, sky130_fd_sc_hd__nor3_4, sky130_fd_sc_hd__o221a_4, sky130_fd_sc_hd__o21a_2, sky130_fd_sc_hd__o211a_4, sky130_fd_sc_hd__nand4_4, sky130_fd_sc_hd__a22o_4, sky130_fd_sc_hd__a21bo_2, sky130_fd_sc_hd__nor4_4, sky130_fd_sc_hd__a31oi_4, sky130_fd_sc_hd__clkinv_2, sky130_fd_sc_hd__xor2_4, sky130_fd_sc_hd__and4_4, sky130_fd_sc_hd__xnor2_4, sky130_fd_sc_hd__a21boi_4, sky130_fd_sc_hd__xnor2_2, sky130_fd_sc_hd__a2bb2oi_2, sky130_fd_sc_hd__and4_2, sky130_fd_sc_hd__a21bo_4, sky130_fd_sc_hd__and2b_2, sky130_fd_sc_hd__a31o_2, sky130_fd_sc_hd__and4bb_4, sky130_fd_sc_hd__nand2_4, sky130_fd_sc_hd__nand3_4, sky130_fd_sc_hd__o31ai_4, sky130_fd_sc_hd__and3b_2, sky130_fd_sc_hd__nand3_2, sky130_fd_sc_hd__a22oi_4, sky130_fd_sc_hd__a211o_2, sky130_fd_sc_hd__a21o_2, sky130_fd_sc_hd__a21oi_2, sky130_fd_sc_hd__o21ai_4, sky130_fd_sc_hd__nand4_1, sky130_fd_sc_hd__nor2_4, sky130_fd_sc_hd__o311a_1, sky130_fd_sc_hd__and2b_1, sky130_fd_sc_hd__and4_1, sky130_fd_sc_hd__a21boi_1, sky130_fd_sc_hd__and2_2, sky130_fd_sc_hd__and3_2, sky130_fd_sc_hd__a32o_1, sky130_fd_sc_hd__o31a_4, sky130_fd_sc_hd__nand4_2, sky130_fd_sc_hd__o32a_1, sky130_fd_sc_hd__and3_1, sky130_fd_sc_hd__a22o_2, sky130_fd_sc_hd__a21o_4, sky130_fd_sc_hd__and2_4, sky130_fd_sc_hd__and3b_4, sky130_fd_sc_hd__o31a_2, sky130_fd_sc_hd__o2bb2a_1, sky130_fd_sc_hd__a2111o_2, sky130_fd_sc_hd__o221a_1, sky130_fd_sc_hd__nor2_8, sky130_fd_sc_hd__and2b_4, sky130_fd_sc_hd__a311o_1, sky130_fd_sc_hd__nand2b_4, sky130_fd_sc_hd__and3_4, sky130_fd_sc_hd__a2111o_1, sky130_fd_sc_hd__o221a_2, sky130_fd_sc_hd__and4b_2, sky130_fd_sc_hd__nand3b_4, sky130_fd_sc_hd__o211a_2, sky130_fd_sc_hd__nor4_2, sky130_fd_sc_hd__a211oi_2, sky130_fd_sc_hd__nand3b_2, sky130_fd_sc_hd__a221o_2, sky130_fd_sc_hd__a211oi_1, sky130_fd_sc_hd__and4bb_1, sky130_fd_sc_hd__o211a_1, sky130_fd_sc_hd__a211o_1, sky130_fd_sc_hd__and4b_1, sky130_fd_sc_hd__o41a_1, sky130_fd_sc_hd__nand2_8, sky130_fd_sc_hd__a21boi_2, sky130_fd_sc_hd__nand2_2, sky130_fd_sc_hd__a211o_4, sky130_fd_sc_hd__a22o_1, sky130_fd_sc_hd__a221o_1, sky130_fd_sc_hd__a41o_2, sky130_fd_sc_hd__o22ai_1, sky130_fd_sc_hd__o21ba_1, sky130_fd_sc_hd__a41o_1, sky130_fd_sc_hd__dfstp_4, sky130_fd_sc_hd__clkdlybuf4s25_2, sky130_fd_sc_hd__dlygate4sd1_1, sky130_fd_sc_hd__clkdlybuf4s50_2, sky130_fd_sc_hd__buf_6, sky130_fd_sc_hd__buf_8, sky130_fd_sc_hd__clkbuf_8, sky130_fd_sc_hd__diode_2, sky130_ef_sc_hd__decap_12, sky130_fd_sc_hd__inv_1, sky130_fd_sc_hd__clkinv_4, sky130_fd_sc_hd__nor3b_4, sky130_fd_sc_hd__o21a_4, sky130_fd_sc_hd__a41oi_1, sky130_fd_sc_hd__nor3b_2, sky130_fd_sc_hd__nor2_2, sky130_fd_sc_hd__o21ai_2, sky130_fd_sc_hd__o211ai_4, sky130_fd_sc_hd__inv_2, sky130_fd_sc_hd__o2111a_1, sky130_fd_sc_hd__a31o_1, sky130_fd_sc_hd__o2bb2ai_1, sky130_fd_sc_hd__nor3_2, sky130_fd_sc_hd__nand2b_2, sky130_fd_sc_hd__o31ai_2, sky130_fd_sc_hd__o21a_1, sky130_fd_sc_hd__a21o_1, sky130_fd_sc_hd__xnor2_1, sky130_fd_sc_hd__and3b_1, sky130_fd_sc_hd__nand4bb_1, sky130_fd_sc_hd__a2bb2o_1, sky130_fd_sc_hd__and4bb_2, sky130_fd_sc_hd__o21ba_2, sky130_fd_sc_hd__nor3_1, sky130_fd_sc_hd__a21bo_1, sky130_fd_sc_hd__nand2_1, sky130_fd_sc_hd__nand3_1, sky130_fd_sc_hd__nor2_1, sky130_fd_sc_hd__and2_1, sky130_fd_sc_hd__o22a_1, sky130_fd_sc_hd__nand3b_1, sky130_fd_sc_hd__o21bai_1, sky130_fd_sc_hd__o31a_1, sky130_fd_sc_hd__o2111ai_2, sky130_fd_sc_hd__a21oi_1, sky130_fd_sc_hd__o21ai_1, sky130_fd_sc_hd__mux2_1, sky130_fd_sc_hd__nor4_1, sky130_fd_sc_hd__o31ai_1, sky130_fd_sc_hd__nand2b_1, sky130_fd_sc_hd__inv_4, sky130_fd_sc_hd__dfxtp_1, sky130_fd_sc_hd__dfrtn_1, sky130_fd_sc_hd__dfrtp_4, sky130_fd_sc_hd__dfstp_2, sky130_fd_sc_hd__dfrtp_1, sky130_fd_sc_hd__dfstp_1, sky130_fd_sc_hd__dfrtp_2, sky130_fd_sc_hd__clkbuf_4, sky130_fd_sc_hd__clkbuf_2, sky130_fd_sc_hd__buf_4, sky130_fd_sc_hd__buf_2, sky130_fd_sc_hd__dlygate4sd3_1, sky130_fd_sc_hd__dlymetal6s2s_1, sky130_fd_sc_hd__clkbuf_1, sky130_fd_sc_hd__buf_12, sky130_fd_sc_hd__clkbuf_16.
Cannot open /home/user/mpw-9/caravel_user_project3/gds/caravel.gds to write GDS-II stream output
Make ship completed.
  1. Looks like the timestamp errors are displayed one cell at a time with a new line only at the end. This can lead to confusing error messages like
    , caravel_mottoWarning:  Parent cell lists instance of "caravel_logo" at bad file path /home/user/mpw-9/caravel_user_project3/mag/caravel_logo.mag.
  2. Do timestamp errors prevent the creation of the gds file? If not, what is the cause of
    Cannot open /home/user/mpw-9/caravel_user_project3/gds/caravel.gds to write GDS-II stream output
  3. The simple_por is added to the search path in caravel/mag/.magicrc
    addpath ../subcells/simple_por/mag

    There's also the explicit load in the tcl script of the maglef view.

    load /home/kanobailey/mpw-9/caravel_user_project3/caravel/maglef/simple_por;

    This file has a GDS_FILE link. But the mag file also has a GDS_FILE link.

    
    ciic-cvc:~/mpw-9/caravel_user_project3$ tail caravel/mag*/simple_por.mag
    ==> caravel/mag/simple_por.mag <==
    flabel metal1 -14 8544 58 8684 0 FreeSans 800 0 0 0 vss1v8
    port 6 nsew ground bidirectional
    flabel metal4 s 38 7255 232 7655 0 FreeSans 320 0 0 0 vss3v3
    port 2 nsew ground bidirectional
    << properties >>
    string FIXED_BBOX 0 0 11344 8338
    string GDS_FILE ../gds/simple_por.gds
    string GDS_START 0
    string LEFclass BLOCK
    << end >>

==> caravel/maglef/simple_por.mag <== port 1 nsew power bidirectional rlabel metal4 38 7965 7241 8283 0 vdd3v3 port 2 nsew power bidirectional << properties >> string LEFclass BLOCK string FIXED_BBOX 0 0 11344 8338 string GDS_FILE ../gds/simple_por.gds string GDS_START 0 string LEFview TRUE << end >>

Is the error message in the build log irrelevant?

Duplicate cell in caravel_core: Instance of cell simple_por is from path ../mag but cell was previously read from /home/user/mpw-9/caravel_user_project3/caravel/maglef. Cell name conflict: Renaming original cell to simple_por#0. Warning: Renaming read-only cell "simple_por" Read-only status will be revoked and GDS file pointer removed.

RTimothyEdwards commented 1 year ago

@d-m-bailey : Weird problems with files not being able to be opened usually indicates that magic hit the filesystem ulimit on opened file descriptors. It holds files open because that's the way Linux does file locking. In this case, there should not be multiple processes attempting to write the same files, so the solution is to add the command locking disable at/near the top of the script, before any .mag files are read. This command was added to scripts in precheck for handling the GF process, because the GF I/O cells alone would overrun the ulimit. I assume it's just that the command was never added to the scripts in the sky130 version of Caravel. This has not happened in the past, but presumably can be triggered for any design with a sufficient number of cells in it coming from .mag files.

RTimothyEdwards commented 1 year ago

@d-m-bailey : Please raise an issue on the github issue tracker for magic about the timestamp warning messages. It is one of those low-level problems that I know about but is too low priority to get worked on. The underlying issue is that stdout is buffered but stderr is flushed after every write, so if stdout and stderr are combined in the output stream then they can get scrambled together. The "quick and dirty" solution would be just to output one line per cell with a timestamp issue.

d-m-bailey commented 1 year ago

@d-m-bailey : Please raise an issue on the github issue tracker for magic about the timestamp warning messages. It is one of those low-level problems that I know about but is too low priority to get worked on. The underlying issue is that stdout is buffered but stderr is flushed after every write, so if stdout and stderr are combined in the output stream then they can get scrambled together. The "quick and dirty" solution would be just to output one line per cell with a timestamp issue.

raised.

@d-m-bailey : Weird problems with files not being able to be opened usually indicates that magic hit the filesystem ulimit on opened file descriptors. It holds files open because that's the way Linux does file locking. In this case, there should not be multiple processes attempting to write the same files, so the solution is to add the command locking disable at/near the top of the script, before any .mag files are read. This command was added to scripts in precheck for handling the GF process, because the GF I/O cells alone would overrun the ulimit. I assume it's just that the command was never added to the scripts in the sky130 version of Caravel. This has not happened in the past, but presumably can be triggered for any design with a sufficient number of cells in it coming from .mag files.

That's crazy, but makes sense. Adding locking disable fixes the problem, but I couldn't find this change on the github version of caravel-gf180mcu. Maybe it's in the production version only.

RTimothyEdwards commented 1 year ago

There should be an issue and pull request on the caravel-gf180mcu repository issue tracker? James Stine ran into the same problem recently when trying to do a local "make ship" on the Caravel GF version. I fixed the script and pushed the correction to a branch called fix_make_ship_script.

d-m-bailey commented 1 year ago

Yes. I see it now that you pointed it out.