Updated requirement editor which allows generation of variety of design using variety of components and blocks.
UI/UX improvements.
Placement engine update. The new engine is more efficient optimiser and produces placements and board outlines similar to a engineer on the project would do.
Layout creation. The engine can now generate 2/4/6 layer designs depending on the complexity or requirement defined. BGA/small pitch components are easily routed.
Designed three new boards complete with assembly. These boards have been autonomously designed at circuit tree with some manual help. It has been very useful and productive exercise.
Time for another test of capability. These tests help us check the hardware compiler performance to a actual built commercial board. Some of the items for us to check are:
How closer are we able to design the board with respect to requirements?
Is there any possibility of optimization among circuit tree outputs?
What is the board cost compared to the comparison board?
Circuit Tree designs would be different than the designed board. How do we verify the design?
Olimex board
This time we compare the capability of circuit tree with another commercial board in the market available from olimex. It is a great open source hardware board available at a competitive price with great support from olimex.
Let us again pick the requirement of the board from site :
STM32F407ZGT6 microcontroller
JTAG connector with ARM 2×10 pin layout for programming/debugging
Ethernet 100Mbit
UEXT connector (UEXT is a board to board connector which supports three serial communication interfaces – I2C, SPI and RS232. There is also 3.3V line and GND.)
USB host
USB OTG
SD-card
Input DC DC power supply which allows operation from 6-16VDC source
Power and user LEDs
Reset and user buttons
4 full 20-pin Ports with the external memory bus for add-on modules
Arduino platform with unsoldered headers
4 rubber pads for the mount holes
PCB: FR-4, 1.5 mm (0.062″), soldermask, silkscreen component print
Dimensions: 101.6 x 86mm (4 x 3.4″)
Boards costs 40USD in quantity of unit 1 as per olimex.
Requirement entry in Circuit Tree
Let us add this requirement on circuit tree requirement editor:
Step 1:
We add requirements in the tool by adding spi, i2c and other buses to a UEXT connector. Similarily for the Arduino connector the spi and uart bus signals are routed to the connectors. We additionally add the GPIO connector having close to 11 pins. Additional interfaces such as ethernet with lan8710, usb type AB port with esd protection, sd card and jtag ports are added as per the snapshots below.
Requirement_editor-1
Requirement_editor-2
Requirement_editor-3
Step 2:
Circuit Tree hardware compiler next finds the controller which can support these function. Circuit Tree returns close to 186 parts. We have option to select STM32F407ZGT6 or STM32F407ZET6 with several other parts. We choose STM32F407ZET6 as olimex schematic has this part designed into it.
processor_selection
Step3:
We next select power of 6V to 14V as required in the requirement and get the schematic design generated in a minutes time. You would notice that the BOM cost derived from Octopart comes to USD 51. The pdf, bom and eagle schematic design is available at link
schematic-final
Step4:
We select a board size of 130mm x64 mm.
placement_file
Step5:
Output placement file is shown below with the constraint that all components be placed on the top side of the board. The red color denotes the placement of the component on the top side of the board. We need to work more on the board by adding the constraints to the board footprints. The arduino connectors are misplaced in the picture below. Files are uploaded at link
placement_with_details
Comparison between two designs:
SDHC section visual check: Circuit tree auto creates processor symbol based on the bus sections and adds them to the connector page. All pins of the connector and the processor pins are the same for sections stated below:
micro sd interface check
JTAG section visual check:
Jtag connection visual check
USB section visual check: Two usb otg ports are compared. The connector pinouts, vbus generators and esd connections can be checked in the schematic.
usb_otg_sch
Ethernet RMII section: Comparison of lan8710 and STM32F407ZET6 connections are done. All controllers pins are the same except for the PG11 which in case of circuit tree schematic is PB11 which is correct as per pin mux.
lan8710 ethernet schematic
UEXT connector connections: The connections of the controller pins and the UEXT assignment is different than allocated. The connector pin definition is also different than the one desired.
UEXT_connector_connections
Differences
Other differences:
Power, clock and reset generation is different in circuit tree. It shows that circuit tree can generates it own power supply connections based on what it calculates the extremes.
Some of BOM parts selected by circuit tree are high is cost. One of the examples being integrated magnetics which cost close to usd 10. We would address this concern once we have sufficient parts in the library which would provide value range to the user.
Arduino connectors are not compared as the pin assignment and gpio connections are not as per connector requirements even though the muxing from controller is correct. In the next release we would have new feature to change the connector pin outs.
IFC pin connections failed as circuit tree does not generate a connection where it observes conflict of IO’s. The commercial schematic uses jumpers to isolate segments which we can also support at a later date.
The placement of the design was not the same as the olimex board. We are in process of improving the constraint addition which would help to create more custom designs.
It was a long post with visual comparison of the two boards. Write back to us at info@circuit.swapdevelopment.com with your feature requests and suggestions.
Circuit Tree is a hardware compiler which aims to assist engineers and corporations to create quick prototypes in embedded space. This concepts has been on a wish list of many engineers and lately DARPA has joined this initiative with announcement of the program.
Number of peripheral components typically used in embedded board design.
Number of misc components for power, clock, reset, switches, leds, adc’s, dac’s.
Select processors from the various options and search bar
Select Embedded elements and parts
In Total circuit tree has close to 6500 components in its library list. This is a good set of components which can generate non human controlled hardware designs from a budding hardware compiler. Are you aware that circuit tree hardware compiler also auto generated embedded board design with schematics and placement for 900+ different controllers in different board form factor in 60hrs . This is far more that a human capability and makes circuit-tree hardware compiler useful for a quick churn of embedded designs. Check out our Github repository for depth of the various designs.
GitHub circuit-tree embedded design repository
Is circuit tree a hardware eda tool to design schematics with full fledged capability of a typical cadence allego, eagle tool set ? No it is not. Consider Circuit-tree to be a engineering assistant to help you with design generation and pcb generation. The hardware compiler is knowledgeable of your design unlike a typical eda tool which is dumb and does not know what a component footprint in xy direction is and where to place or route connections from it. The hardware compiler can present various deliverable in cadence allegro, eagle, altium or mentor tool right from the application console.
There are new features coming to circuit tree which would make circuit-tree useful for further majority of the engineers. New capability need to be thoroughly tested and takes time but we are committed to get the best hardware compiler in the market.
We have chartered a new goal to create development boards of the designs created by circuit tree to showcase Circuit Tree Design capability. To keep the task fairly simple the development board requirements are listed below: 1. Create a drone board which can fly while being controlled from mobile bluetooth. The frame of the board would be a PCB where the Motors would mount. 2. The drone board should be powered by a battery and should have battery charging capability. 3. The Main elements of the drone board would be a small micro-controller, bluetooth radio, accelerometer, gyroscope, compass, jtag port for debug, 4 pwm’s, led and reset switch. 4. The battery of this board when in air should last for minimum 15 minutes. 5. As a first bringup goal the drone board should be able to fly till small altitude.
Next we start the electronic design. We chose circuit tree design to first look at the list of controllers which can be used for the drone design. Based on the component avaibility results we narrowed down to stm32l052k6t6 from st micro electronics. Quickly the components were selected as shown below and a block diagram generated.
Board requirement capture screen
Board block diagram of the components selected
We did wait for schematics to generate within 2.5 minutes and within that time did scan the Bill of material file generated from the tool. There are certain discrete components which circuit Tree could not select which is left to the designers to update.
Also in the schematic we have a dummy connector added for Timer pins. The connector is important as it helps in allocating the micro-controller pins for the Timer/PWM. The intent of using Timer is to allow mosfets to be added to these pins to eventually allow motors to be driven.
Next we click on the layout viewer to select a dxf file and check if the placement dxf outline is correct. Next we fire the background process to generate placement.
Board components prior to start of auto placement algorithm
Within next 3 minutes the placement of the board is generated and it looks as shown below:
Finished Board component placement
The algorithm shows that the components can be fit in the given board dxf file. It is time to define the board boundary restriction so that the algorithm can rerun and produce more symmetrical placement around 4 weeks.
We would keep updating the blog as we get the results.
Here is the Git hub link for design files for the drone design.
Update1: Sept 16th 2017
Muneeb started working on the eagle downloaded design to add motors pads and mosfets to the design. He is one of smart engineers we have on circuit tree who took the design and first started to review the design and compare the output of circuit tree with the stm-cube tool output. Once we was happy with the output it was time to change the connector page to add the motors pads and mosfets as shown below. The only change he had to do in the downloaded eagle schematic file was to change the grid to default.
Here is the copy of the page he edited:
Updating dummy connector page with motors pads and mosfet.
The next check for him was to check if the eagle ERC was displaying any errors. No errors were found but number of warnings were observed stating two similar named nets are connected to one another. After a check it was time to see if the the circuit tree board file can get newly added components(mosfets and motor pads) in the placement. He further customised the placement file to meet his requirement.
Board revised placement
Update2: Oct 10th 2017
We have released the board file for fabrication and assembly. Eagerly waiting for the first circuit tree design to come to life.
Stay tuned to know how we progress ahead with this design. We cannot control our excitement.
Update no 3: Oct 20th 2017:
We just got the pcb fabricated from china. There is a minor issue with respect to the via tenting which the pcb vendor did not make despite being in the requirement. Components have been ordered and now the pcb assembly starts.
Top Side of the drone PCB
Bottom Side of the PCB
Looking for a healthy board bringup without any wires.
Update no 4: Oct 30th 2017:
Here are the set of assembled boards designed through circuit tree. Board bringup’s are always interesting milestone for a hardware design engineer as we spark new life into a element.
Quick checks done so far:
Component placement checked
Power short check shows no issue so far.
Weight of the board.
Note there are no overlapping components.
So far so good. It is late in the evening will do the bringup tomorrow with a detailed test plan.
Assembled Drone Boards designed by circuit tree
Update no 5: Nov 2nd 2017
Picture of the board assembled with motors and power test. Board was first tested for open short test. The board was powered with usb cable and then the main board voltage was found to be 3.29v. Great work so far.
drone_with_motors
Update no 6: Nov 4th 2017
The moment we have been all waiting for is here. Here is a quick update on the board bringup:
Powered the board through the usb cable connected to a laptop. All voltages are good.
Connected the st micro to ST-LINK/V2 through a custom adapter cable as the connector on the board was incompatible with the pitch of the programmer.
Detected the stm32l052 device on the programmer console.
Programmed a code to drive the motors through the mosfet.
Next connected the battery on the board after switching on the board.
Result is as shown in the video. The right side of the drone had more lift compared to left side.
Really happy and satisfied with the result.
The next steps would be to connect the board through bluetooth to power on and off the board using laptop bluetooth control. Also we would interface with all the board sensors to get the real time data.
The good news is that the most of the hardware functionality is working as expected. Circuit tree application has designed a board which is reliable in short span of design time. In hardware design lots of items have to tick right and circuit tree has just shown the capability.
The next update would be in few weeks when we have created the software.
Update no 7: Dec 10th 2017
Here is another update to the drone testing. In the video below you will notice that Bluetooth and a application layer is running on the drone which allows turn on and off of the left side and right side motors. You will also notice that we had to connect a wire on the board to connect the stmicro with the bluetooth transceiver. This wire was added to allow the software to reset the transceiver as needed. This is the option which would integrate in the application.
This is a good learning we have had. In the next update we would share the application software used for the development which would be free to use.
Thank you for reading through the long post.
Update no 8: July 31st 2020
Circuit Diagram and design files for the drone project is available at the github link
Circuit Tree is expanding day by day and in order to meet the complexity of vast requirements of embedded design we have redesigned the application. The new application is super easy to use, 10x faster than the previous version and efficient enough to generate simple or complex designs as needed.
Select Embedded elements and parts
Select processors from the various options and search bar
Select various power up cases
Select Advanced circuit design options.
Not only is the user interface changed we now support loads of features to provide quick design export options. You can now export Altium, Orcad and Eagle designs through circuit tree through menu or request dispatch over the registered email.
Various design export options as well options to email files when then generate
We now also support auto placement module where based on the dxf file intelligent board component placement is generated by circuit tree. The time required to generate simple placement to complex placement varies between 20 seconds to 7 minutes which is solely dependent on the complexity of the design. Compare this time to the manual placement of the components and you will find it useful. Circuit Tree is most useful tool to you where iterations at prototype stage need to be done to find the best form factor fit.
Pre Component Placement stage
Interested to see more of some interesting placement results. Additional details of this new feature is covered in a separate post.
Automated intelligent component placement by circuit Tree
Example of Automated intelligent component placement by circuit Tree
Here are few pictures which tell a story of how most of the circuit board design software’s doing a component placement job.
Schematic with decoupling capacitors
Component Placement on PCB1
Component Placement on PCB 2
The placement Picture shows how badly the CAD tools have badly messed up placement. With bad placement the objective of placement of capacitors closer to the device stands nullified. It is important that decoupling capacitors are placed closer to the power pins of the device in correct orientation with the shortest path possible with thick traces which can offer lower inductance path for the current flow.
From our experiments the auto placement results were poor when using under following conditions:
Irregular Board outline
Segregating high voltage circuits from low power circuits
Placement of high speed components around on the board to minimise noise and get good signal integrity on the signals.
Hence most of the designers prefer to perform the component placement of the board and then use or don’t use auto routers for quick layout.
Component placement should ideally have knowledge about:
What the circuit is all about? It should know what are components, power, clocks, reset, high speed circuits, smd/through hole footprints, constraints? Without this knowledge any placement engine output is just not complete.
It should understand the board outline, placement constraints, pcb layers.
It should understand netlist which most of the routers use for current optimal placement. All components are placed so that the nets/traces can have shortest distance between the device and receiver.
At circuit tree we care about this problem and are working to solve this problem. We believe that by offering intelligent part placement of our design solutions designers can use auto routers or manually route the board to significantly reduce the time it takes to complete the design.
This new feature is under development and showing promising results. Stay tuned to know when we start offering this exciting new feature.
Short Introduction to Circuit tree
Circuit tree is a circuit board design software application having intelligence of a hardware engineer to create embedded circuit board designs. It features more than 1000+ processors and controllers along with extended hardware peripheral library.
To start building your circuit board design now click on Access Tool.