We keep enjoy experimenting. Experimenting to create new type of designs, find issues, open new exciting features, check new ways to test the circuit Tree designs. We have a lot of capability to churn and mine new embedded designs using so many controllers, peripherals , placement options. So how do we check so many designs to check if they meet circuit tree quality goals?
Well answer lies with scripts. We use scripts written in python for several application including this one which auto generate controllers designs with random placement files. Even though regular users have menu options to choose designs scripts do following testing autonomously:
select a processor/microcontroller
Randomly choose peripherals that can be connected to it to generate design. The number of peripheral selected are random.
Randomly select a voltage to be applied to the circuit
Randomly select applied voltage options. It can be through custom voltage adapter or through the battery select options.
Randomly select board file through dxf file and does auto placement of components. Only the files where the part placement is possible the file picture is taken and displayed.
Test for errors
Error between circuit tree designs and eda tool export options
Check if the symbols and footprints are being exported correctly on the library.
Check if all the cad design can be generated without issues.
Now we invite you to be the judge of the designs created with circuit tree. Check the github directory to see our design listing and let us know if you are able to find design errors. Then we would know if the experiment helped us.
To start creating designs today log in to the hardware compiler at link
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.
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.
Our Goal is to push the application capability to design and develop a complete end hardware product. I am pleased to announce that with each design created with circuit tree the design would bundle layout footprints along with the schematics. The footprints are currently in eagle format and porting to other EDA cad format is ongoing.
Pre Component Placement stage
In addition the application is able to provide intelligent placement of component based on the required board outline. Option is given for the User to select a dxf file from a menu option or can provide his/her dxf file. The component auto-placement algorithm looks at following parameters:
1. Board outline
2. Holes position
3. Placement restriction, top and bottom side
4. Components type and component footprints
5. Netlist relation of the component.
6. Plenty of other secret sauce.
The end results of auto-placement algorithm are interesting. Some of the interesting insights we see here
1. Most of the decoupling capacitors are placed close to the IC pins. [Check the present tool Limitation covered in the blog post]
2. The components such as crystal, clocks osscilator are placed close to the receiver.
3. Most of the Connectors are placed close to the edges with correct orientation for easy plug in of cables.
4. Unlike other EDA components placement power components are placed to allow planes or thick traces to connect the components from far off positions. Circuit Tree does not try to minimise the power distances. It would try to keep linear power regulators close the components which needs it and would keep switching regulator far off.
5. Ethernet transceivers and ethernet magnetics are placed close by as needed.
6. Irrespective of the shape of the board the component placement is correct for the all use cases tested.
7. Components were not placed in the holes or placement restricted areas.
8. Component placement is done on top and bottom layer and emphasis is to have sufficient separation so that components don’t overlap.
Circuit tree application results delight us as we are usually not prepared to see a machine able to achieve quite human like performance. Some of the auto-placement examples which we captured during our testing are shown below:
DXF Board example 2 auto placement of components
DXF Board example 4 auto placement of components
DXF Board example 3 auto placement of components
Ongoing further work in this area:
1.Currently DXF import is restricted to certain design formats. We would like to make it universal to allow all dxf files.
2. We would like to offer option to allow user to generate smallest size board placement. Here circuit Tree would suggest the board outline which can recommend smallest size board based on the component present.
3. Option for user to move components on the board as per his requirement and use the auto-placement algorithm to regenerate the board placement based. Other option would be to allow users to select placement on top/bottom or both sides, define placement boundaries etc.
The goal of this new feature is to offer component footprints and auto-placement of components such that auto router can be used to route the board. This will reduce the turnaround time of design and provide quick prototype testing with minimal effort.
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