Frequently Asked Questions


How do I find more information on…

docs.jitx.com is the main source of documentation on the JITX language and IDE. You can also visit our Discord server to obtain more assistance


What do I do when I'm stuck / can't figure out how to do something?

See: Tips For When You're Stuck For additional inspiration you can also visit our Discord server to obtain more ideas


How do I compile a design?

You can compile a design by:

  1. Have VSCode open in a folder that has a stanza.proj file linking the design. Open the file in VSCode and press <Ctrl> + <Enter> to run the design in the JITX Shell.

How do I check my design?

Try the Check a design tutorial to learn how to check designs in JITX.


How do I export data?

Top Level Commands describes export-cad and export-bom to export CAD and bill of materials data.


How do I import data?

Top Level Commands describes import-cad for bringing in existing CAD data. It's also common to write one-off importers for things like bump-maps or FPGA constraint files. These typically read the source data and emit JITX code that can be run as part of a design.


How do I edit the schematic? The layout? The symbols?

The best way to edit a schematic in JITX is to organize it by following this Tutorial: Schematic and layout.

You can pre-place components in the layout using loc functions to hard-code geometric constraints. If you place components in a module, and then use that module in a design, remember to place the containing module as well. Typically we only pre-place things that actually need to be fixed, then leave it to the solvers, and finish ourselves in the UI.

Symbols are defined in JITX code. You can import them, define them yourself, or use the pre-defined symbols in JSL Symbol Framework.


How do I instantiate a component?

inst c : my-component


How do I import or use a library?

You can import existing CAD designs to create libraries of JITX code (see the guide How to import from Altium) or How to import from Kicad.

To use a library of JITX code, edit the stanza.proj file in your active project to include a line like include "../path/to/library/stanza.proj. Everything linked by that stanza.proj file can now be used in your project.


How do I create or manipulate geometry?

Outside of pads in a landpattern, layout geometry can be created with geom statements for conductive elements, and layer for non-conductive things.


How do I report a bug?

Visit our Discord to report a bug.


How do I find more components?

You can test search your JITX libraries for keywords, and query the component database for large-scale searches: Part Query API


How do I get an area estimate?

When you run view-board() for your design, the placer will show you a dense layout of your components so you know the overall size of the design.


How do I optimize pin assignment?

Pin assignment is optimized for routability by using a basic algorithm based on Euclidean distance. To lock in specific preferences for pin assignments, directly net pins instead of using supports statements. e.g.

  net (stm32.PA[4] sensor.i2c.sda)
  net (stm32.PA[5] sensor.i2c.scl)

Instead of

  require i2c:i2c from stm32
  net (sensor.i2c i2c)

How do I share my JITX design with another user?

A JITX design is code and you can share it like you share any other file. We usually keep the code for a project checked into a Git repository, which makes for easy collaboration on JITX designs and generators.


Are PCB objects positioned globally or relatively to each other?

By default, when you assign a position to an instance in a module it's in the frame of reference associated with that module. You can create relative poses using the relative-to keyword in a loc statement. loc docs.


What is a stanza.proj file and how do I use it?

stanza.proj files are used to link your JITX code together. They contain pointers to which packages are defined where. For more information on the details of the stanza.proj file, you can refer to the Stanza documentation here: Build System