Git Product home page Git Product logo

cace's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cace's Issues

When an unexistent file is passed as argument, the syntax evaluation writes "CACE file has no syntax issues."

I'm using the module python -m cace.common.read_cace as syntax evaluation criteria.

When passed an unexsiting file as argument,
I expect the program to indicate that the file doesn't exist
The program indicates that the file doens't exist as expected but also gives the success text

$ python -m cace.common.cace_read asdfasdgasdg
Error:  No such file asdfasdgasdg
CACE file has no syntax issues.

Name collisions when making copies

When a parameter is copied (duplicated), then _copy is appended to the parameter name.

If such a name already exists it should append another _copy until the name is unique in order to avoid name collisions.

Very slow Cace simulation on ulpcomp2 input offset example

cell is ~/cheetah_v3_analog/dependencies/sky130_icrg_ip__ulpcomp/
Run time is exceptionally long for me but about 100x faster for Tim. Suspect an IO setting difference that Tim has set but I have not.
The simulation with the speed problem is input offset voltage

Need to handle user paths in schematics

Currently, the main point at which CACE breaks when I clone a user's project is where the user has hard-coded a path to the PDK or to the project itself that is an absolute path (ngspice does not handle tilde-escapes, so that doesn't need to be considered). I would like to see the following behavior implemented:

(1) The CACE template substitution discovers any path in the netlist.
(2) If the path has "libs.tech" or "libs.ref" (clearly pointing to a PDK) but is not using "{PDK_ROOT}", then flag a warning back to the user that there is a PDK path in the schematic that is not portable.
(3) If the path has the user's $HOME as a leading component, also flag this as a portability issue
(4) After doing its own variable substitutions, it should check each such path to see if it exists. If not, then it should flag an error. Then, it should check for whether the path appears to be to a PDK or to the project directory itself, and attempt to correct the entry to make the path valid.

Alternately, if (2) and (3) forced a fatal error instead of a warning, then (4) would not be necessary.
However, beware of the situation where the upstream schematic has a variable that is being substituted by xschem itself rather than CACE. Maybe only absolute paths that appear in the .sch file should be flagged.

Parser failures in cace_read

The cace_read parser fails to identify an illegal parameter name. Since parameter names are used to generate file names, they must be both unique and may not contain spaces.

The parser also fails to identify a spec entry, and possibly all key:value dictionary entries, in which a key is given but no value is given. In the case of a specification entry, such as "minimum:", a missing value should be set by default to "any". In other cases, defaults should be substituted as makes sense or else a missing value should flag an error.

Ideally, flagged errors should report a line number in the file.

Failure to read a file in cace-gui should not result in an exit, which causes error messages to disappear.

Switching netlist sources while running simulations does not work correctly

If you start some simulations and then change the netlist source while they are still running, things go wrong as the new table is annotated with the results of the running simulations.

Either:

  • Prevent switching the netlist source while simulations are running
  • Or make sure the netlist source is taken into account when updating the table

Run ngspice in batch mode

Currently CACE starts ngspice in interactive mode. This means if there is no quit at the end of the control script, CACE gets stuck.

Therefore, pass --batch to ngspice to automatically quit at the end of simulation.

Startup behavior

I previously had two behaviors in CACE that appear to have become lost:

(1) When cace-gui is run, if there is no matching project name or no matching .txt or .yml file, then the GUI still pops up, and waits for the user to select a characterization file to load.

(2) Before cace-gui brings up the GUI window, all output text is collected in a "messages" variable. If the GUI comes up successfully, then "messages" is dumped into the console window pane. If something happens and cace-gui dies, then "messages" is dumped to the terminal as the last thing that happens before the program exits (requiring that exceptions be caught and handled gracefully).

Right now, if I start cace-gui and (I think) either of the above items happens, then cace-gui returns to the terminal prompt with absolutely no indication that anything happened.

"unit: dBV" is very slow in spice_unit_unconvert

For a simulation in which

variables {
                name: freq
                display: Frequency
                unit: Hz

                +
                name: Vprobe
                display: Vin
                unit: dBV
[...]
}

... then it takes many tens of milliseconds per unit conversion to run spice_unit_unconvert on this value and plot a simulation output.

Queued parameters can not be cancelled

When "Simulate All" is pressed, all parameters are queued and up to parallel_parameters are run in parallel. The remaining queued parameters can not yet be cancelled until they are also in the running state.

Non-schematic projects still try to generate a netlist

It would be nice to be able to use CACE for all sort of circuit characterization, not just magic-flow IC characterization. For instance, there are PCB designs that may have no layout, and testbench designs that have no schematic and only a netlist.

Currently, CACE will try to process a schematic into a netlist (and will fail if it does not), even if a netlist already exists. The desired behavior is that if a netlist exists, and a schematic does not, it should simply attempt to use the netlist that is already there.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.