Draftsman in altium

Hi everyone,

I didn’t have lot of time these past few days but I am back to show you some good things using the tool Drafstman in Altium.

Have you ever wanted to produce a nice document related to your design but you don’t know where to start? I mean, a document which look like professional where you can put all your engineering requirements and mechanical informations.

Draftsman is what you need.

Draftsman is an alternative way to create documents for board design. Based on a dedicated file format and set of drawing tools, the Draftsman drawing system provides an interactive approach to bringing together fabrication and assembly drawings with custom templates, annotations, dimensions, callouts, and notes.

Once your design is finished, you can add a Drafstman document by clicking on New->Drafstman document:

As you don’t have any template yet, you will have to choose an empty sheet (Default) for your first one:

You can start by changing the page option, sheet size, grid…

Then the fun can start!
With the Version 18, Altium make some improvements. You can have more choice in the place section.

I like to place an isometric view which is nice for an overview of the board on the front page:

Then you can place a frame with information like title, number of page, date, author…

A cool trick that you can clic on the (x)+ button to acces to the list of parameters used in your design:

For example to get the number page you will write:

Page =SheetNumber / =SheetTotal

After that you can add more sheet by clicking right and « add sheet ». You can add more views of your PCB, the stackup, the drill table, your BOM and more…

If you like your arrangement you can save it as Template by clicking on File->SaveAs and choose:

Once you finish, you will be able to export the Draftsman document in PDF clicking File->Export->PDF

Here we go, I hope this will be helpful 🙂

ARDUINO MKR VIDOR 4000 FPGA – How to program it?

For those who may have missed it, Arduino recently launch a new board based on a FPGA ALTERA Cyclone 10LP. The MKR VIDOR 4000 is highly configurable and powerful, and it can perform high-speed digital audio like speech recognition for example and video processing.

What is on the board of the MKR vidor? Quick recap:

  • 8 MB SRAM
  • A 2 MB QSPI Flash chip — 1 MB allocated for user applications
  • A Micro HDMI connector
  • An MIPI camera connector
  • Wi-Fi and BLE powered by a U-BLOX NINA W10 Series device
  • MKR interface on which all pins are driven both by SAMD21 (32-bit ARM CPU) and FPGA
  • Mini PCI Express connector with up to 25 user programmable pins
  • The FPGA (an Intel/Altera Cyclone 10CL016) contains 16K Logic Elements, 504 KB of embedded RAM, and 56 18×18 bit HW multipliers

As you will notice,  the documentation is still a bit sparse and not very available ye.

Our colleague from https://systemes-embarques.fr made a tutorial in french to how to reprogramm the user config of the FPGA. Since not many of you speak french, I did a translate of the first part:

Installation of Quartus

The FPGA is based on the ALTERA Cyclone 10LP,  first you need to install  le software Quartus:

  • Go on the link of Altera and choose the last version of Quartus Lite Version
  • The minimum you need are Quartus Prime (including Nios II EDS)  and Cyclone 10 LP device support. Place then in a the same repertory.
  • If you don’t have any Altera account you will probably have to create one.

Note : If you think you will use the USB Blaster case to program the FPGA you may need the package « Quartus II Programmer and SignalTap II » of the version Web Edition 13.0.

Once the download is completed, launch the .exe  (QuartusLiteSetup-xx.yy-windows.exe).

If by default the installation gives you the choice, select the support for Cyclone 10LP in the following dialog box.

Basic Arduino Project.

Next step we need a base of project with the right configuration of I/O of the Arduino board. You can find it here.

Il nous faut ensuite avoir une base de projet avec les configurations d’E/S de la carte ARDUINO.
Vous pourrez trouver celle-ci à cet emplacement.

Unzip the ZIP file and open with Quartus (File → Open Project)  the file MKRVIDOR4000.qpf.

You will find it int the tree structure: …\VidorFPGA-master\projects\MKRVIDOR4000_template

The top level module  « Top level entity » is for this project the module:  MKRVIDOR4000_top.

This file define:

  • The name of I/O signals and their direction (input, output, inout,..),
  • The internal links (Wire), buffers and registers (reg),…
  • Instances of other modules ( ici cyclone10lp_oscillator et SYSTEM_PLL),
  • Combinatorial rules (assign) or sequential (always/begin/end)

Another necessary file is the one that put in relation I/O signals with the prinning/routing of the FPGA. This file also define the volatge level of each signals so dont modify it!
You can see it with « Assignments → Assignments Editor ».

If you compile the project  (Processing → Start compilation), and look at the generated architecture (Tools → Netlist viewers → RTL viewer), you will see that the project does not contain many things yet.

The input of the clock iCLK at 48MHz from SAMD21 goes to a PLL to generate a 100MHz output to the SDRAM.

Blinking LED.

We are going to add a new sheet to the project:
Faites File→New et choisissez « Block Diagram/Schematic File »

A  new window then opens. We can add and connect component like an electronic schematic. To blink a LED, what we need is an input port (a clock) and an output port (LED signal).

Add these ports  (1 Input + 1 Output) in the sheet sur la feuille  by clicking on the icone :

Then double click on the name, or right click and « Properties » : rename lthe input « iLEDCLK » and the output« oLED »:

Before adding any logic between these two ports, save the schematic (CTRL+S) with the name « TUTO_Schematic.bdf »

The clock that we will use in inout is the one provided by the internal oscillator of Cyclone 10 (around 80Mhz). This is too high, for our use. Instead of using a PLL with frequency we will use a counter.

With each clock strike in input, the count will increment. Every bit of the counter will change of state with its own frequency :
Freq_bit_n = ( Freq_entrée / (2 ^ (n+1)))
For a 1s blinking we will use n=25.

Adding the counter.

To add the counter, push the button « Symbol Tool » :

Select LPM_COUNTERand click on « OK » to put it in the schematic.

Then edit the counter’s properties (right click + « Properties ») enter the value 26 for LPM_WIDTH.

Then you will

– connect the input iLEDCLK to the clock of the counter usingthe command « Node Tool ».

– Take out a bus from the output q[] of the counter with the command «Bus Tool »

– Rename this bus « compteur[25..0] » (Right clickon the bus and « Properties »)

Finnaly, conenct with the tool Node Tool the output oLED to the bus compteur.

As we need only one of the signals of the bus, you need to tellQuartus which one (in our case : compteur[25])

You are done with schematic, save it RIGHT NOW!

The next step is to include the schematic in the «Top level entity » of the project.

To do this, double click on the file MKRVIDOR4000_top.v

And add the following lines: (above reg [5:0] rRESETCNT;) :

TUTO_Schematic TUTO_Schematic_inst
.iLEDCLK(wOSC_CLK) , // The input of the clock is connected to the intern osc 80MHz
.oLED(bMKR_D[6]) // The outout of the LED is connected to the pin 6 of the port MKR

All you have to do is recompile the project:

Create the files app.h.

The compilation generated a file MKRVIDOR4000.ttf  in the folder output_files. This file list in text format the byte of the FPGA configuration. We need to invert bit by bit every byte before send it to the ARDUINO board. To do this, download the software here [DIT: Link updated].

Execute the command: java ReverseByte MKRVIDOR4000.ttf app.h

It will generate the file app.h that you can include into your empty sketch available here.

All you need now is to load the sketch in the board using the arduino IDE.

Notes :
– In no case you should reconfigure the port PA20 du SAMD21in output. 
– The port PA20 (nommé bMKR_D[6] coté FPGA) corresponding to the pin 1 of the connector J5 (marked « 6 »). You have to connect a LED in serie with a resistor between this pin and the ground to see te LED blinking.

How to generate a STEP 3D File without small components (reducing the size of the file)

During a product design, you are sometimes brought to work with other designers. To do a well assembly with mechanical part like casing, harness cable… you will probably have to share your design using STEP 3D files. A big problem when you are doing a complicated design is that the 3D STEP can quick become a heavy file (>100mo).  This can be difficult and annoying to send or share (via mail/FTP server) especially when you send your design back and forth to make small corrections…

To reduce the size of the file, the best way is to remove all 3D parts that you don’t need. Generally we use 3D step to make sure everything is well centred, aligned and the design fit correctly and the connectors match with the rest of the design. This means we don’t need to add the 3d models of small packages like 0402 resistors for example. Don’t forget that more 3d models you have, bigger the size of the file will be!

How to choose only big packages?

    • First open your PCB, in 3D or 2D view whatever (in my example I am using the OpenRex Project from imx6rex).
    • Then click on the Panel button on the right bottom side and open the PCB Filter

  • In the filter write : IsComponent and (Height >= 50) 

You can adjust the Height value depending of your needs and if your design is in millimeter or in inch.Don’t forget to check the box Matching: « Select ».


  • Now click on « Apply to All ». At this step, all the components that are bigger than your threshold are selected.All you need to do to finish is to click on File->Export->STEP 3D:

  • In the opening window (Export Options) you have to choose « export selected ». This will create a step 3D with only selected components.

  • Here we are, we have now a 3D STEP file definitely lighter than the original one!:


Components are not selected with the filter!

You will probably be face to this problem, you should know that this problem is not a bug from Altium, but it’s from your design! You have to understand how PCB filter works. When you use the PCB filter, the software will filter the parameter « Height ». This parameter should be filled in every PCB component that you are using.

For example, I have a USB connector, as you can see the Height of the connector is 118mil, it’s correct. The PCB Filter will select the connector when using « Height >= 50 ».

Another example with a SD card slot, you can see that the parameter Height is 0, this means when you will use the filter, as the height is zero the component wont be selected!!:

In conclusion, make sure that all you component have a Parameter Height with the right value before using the filter.

Leave me a comment if you have any questions or if it was helpful. 😉

How to add a quick table of contents in Altium

There are several ways to add a table of contents in your Altium’s design. The more personalized will be probably to do it by hand but it will take you a lot of time to adjust everything in order.
In this tutorial, I am going to show you an easy way to make a quick table content in Altium using directly a copy of the Annotation compiled sheets window.

In this example I will use the OpenRex Project from imx6rex.

  1. The first step is to numbering all your sheets if you did not do it.
    Go to Tools->Annotation -> Number Schematic Sheets
     In the opening window, click on the « Update Sheet Count » button to update the number of pages, then put your sheets in order and press « Auto Sheet Number » and « Auto Document Number ».
  2. Now that all your sheets are numbered, go to Tools-> Annotation-> Annotate Compiled Sheets.
  3. Put in order all of your sheets using the MoveUp and MoveDown buttons then click on « Annotate Sheet » to update the sheet number row.
  4. Guess what, this table will be your table of content! Select all the table using Shift+Click the Ctrl+C to copy the table.
  5. Open a new spreadsheet (Open Office, Excel…) then paste the table:
  6. You can add all you want, images, colours… Once you are done, just copy and paste the new table to your first sheet design using Ctrl+C, Ctrl+v
  7. Here is an example of final result (I am sure you can do better):
  8. Leave me a comment if this was helpful. 😉

Altium designer 18

Here we go, the new version of Altium 18 is out since December 2017.

You are still hesitating to make the step and  go to the 18th version ? 

Read my article to know everything you need before switching to the new version.

The new interface

The company decided to completely remodel the new version with a new interface  which looks modern and fresh with the grey/black background. All (or almost ) functions that were in earlier versions are there, however they made the decision to move the position of  some tools from left to right. Why did you do that guys?!

For example, the system preferences and the profile/licence management were always on the top left of the windows, now it’s on the right.

The first times you will use the software it create confusion or annoyance. You will not be able to find what you are looking for just as in earlier versions.  The hardest part is to forget about your habits that you used for decades from Protel to Altium designer 17.

A good new feature is that all the properties are now displayed as a non-modal window, this means that you are no longer forced to right click on a component to change his property (this will save you a lot of time when you want to move coordinate ‘s component, write text, change layers…). The non-modal window from the tab panel show directly all the information of the component:

Other than the new interface they finally allowed designers to do assembly multi-board.  The first step is to create a workspace that contains several projects. After that you will have to create a new schematic containing the pin out of the connection between boards.

This is definitely an improvement, who never made mistakes and got two boards that could not fit together or with a wrong pin out connector?! With this new feature you will be able to generate a report and make sure you two boards are synchronous. With the 3D assembly you will be able to see any design mistakes like the height of a component that touch the other board, two screw holes that are not well aligned and more…

In terms of performance, Altium did a big advance compared to version 17. The transition from 2D to 3D is  so smooth particularly thanks to the multi-threaded tasks and the fresh 64 bit architecture. The software will take all  the resources needed to run smoothly and fluently.

Active route

Altium wants to save your time while designing your board with this new feature called Active Route where the software handles the design constraints, such as the clearances, widths, vias …  This will reduce one of the most time consuming phases of your layout. You are going to wonder what is the difference with the autoroute? Well this feature is definitely more efficient as it just apply for your specific nets or component and not to all the board as an auto router would do. More over you can very easily define a path where the traces will flow.

PDN Analyzer

Power delivery network (PDN) Analyzer is an extension not powered by Altium but by CST® . This extension was available for Altium 17 but it looks like they really want to promote PDN Analyzer with the new version of Altium 18. PDN is a simulation tool, which analyzes a board design’s DC performance based on its electrical and physical properties. I wouldn’t go any further about PDN Analyzer on this article. I thing this tool needs his own post, stay tuned!


In conclusion, the update to version 18 will depends of your needs. If like me you were frustrated not to be able to assembly two board together you should go for Altium 18. All the new improvements make the design easier and time-saving, however it will take a little period of adaptation to fully take advantage of the new interface. And finally, as always when new released are out, lots of bugs are found and corrected  so make sure to check frequently for new corrected/fix update.


Arbitrage crypto

Il ne se passe pas un jour sans que le Bitcoin, l’Ethereum et l’ensemble des cryptomonnaies ne fassent parler d’elles.  Mais avez vous déjà entendu parler de l’arbitrage?
C’est une technique qui permet de tirer profit des fluctuations des marchés des cryptomonnaies grâce aux différentiels de prix qu’il existe sur les différentes plateformes d’échanges.
Étant donné que le marché de la crypto monnaie est très volatile, la valeur des crypto change sans arrêt, il est très compliqué pour les robots qui sont utilisés pour rééquilibrer les prix (de sorte d’avoir les mêmes de vente et d’achat sur toutes les plateformes) de suivre au centime près l’évolution du marché .

Le but de l’arbitrage est de profiter des désajustements temporels lorsque le différentiel est grand par exemple lors  d’un crash  ou une explosion du marché. Généralement, ces crash et/ou explosion du marché interviennent suite à des bonnes ou mauvaises nouvelles.

Les bonnes stratégies:

Le choix des plateformes
Plus on a de plateformes, plus on trouvera des différentiels importants.

Le délai
Le délai d’achat et de vente est crucial pour faire de l’arbitrage, la meilleure solution pour minimiser les risques est d’avoir la même quantité de valeurs sur les deux plateformes pour pouvoir en fonction des désajustements qu’il pourrait exister entre les deux plateformes pouvoir vendre et acheter de façon quasi simultanée.

Les frais
Les plateformes prennent des frais plus ou moins importants lorsque vous achetez ou vendez des devises. Dépendamment desquelles vous utilisez les frais peuvent varié entre 0 et 3% ce qui peut représenter beaucoup par rapport à la plus-value qui en général dans l’arbitrage représente 1 ou 2% du volume de la transaction. C’est pourquoi il est primordial  de s’informer avant des frais d’achat et de vente de la plateforme.

Les risques de l’arbitrage
Les crypto monnaies rimes souvent avec escroquerie, outre le piratage informatique,  le hack, l’arnaque est l’un des principaux risques liés à ce type d’investissement. Vous devez veiller à la crédibilité de toutes plateformes que vous utilisez. Une rapide recherche Google vous permettra d’avoir un avis sur la plateforme.

Vous voulez un aperçu des prix sur les plateformes les plus populaires? Jetez un œil ici:

How to differentiate digital and analog ground?

If you are just starting in the great big world of electronics designs, you will probably be faced of how to manage grounds and how to differentiate digital and analog grounds to ace your electronics designs.

What the difference between analog and digital ground?

In an ideal world, there is no difference between analog and digital grounds.  In the real word it’s different, the noise is more important in the digital ground.
Why digital ground? Principally because in saturating logic, such as CMOS and TTL, they draw large and fast current spikes from its supply during switching. For exemple the sub or well are locally connected to the sources of P-N Mos and the mos are switching from rail to rail (Vcc-Gnd), this will create noise.
Usually, digital circuits  are more robust to noise, which have only two values 0/1 contrary to analog circuits that are working on specific working points depending on requirements.
Contrary to digital ground, analog ground will have slower Dv/Dt that will definitely create less noise.

Does it really matter if my signals are noisy? Of course it does! It matters when using analog signals where you don’t want erroneous voltage offsets and noise superimposed on the signals.  The classic example would be an audio signal where a few mV of noise makes the difference between acceptable and unacceptable.


So, how can you avoid noise? A good practice dictates that the layout is arranged such that ground currents from the digital circuits do not flow through the ground path for the analog circuits.  Both analog and digital ground should not be mixed up to avoid coupling from digital noise to analog.

Ground plane layout

The layout will be crucial to reach the best performances. The goal is to separate the analog and the digital grounds. The best way to do it consist of created two different ground planes (AGND and DGND) and tie them in a single-point ground (see the image below).

This method is the fundamental concept of a “star” or single-point ground system.
In practice, the current returns must consist of large area ground planes to obtain low impedance to high-frequency currents.

Decoupling capacitor in IC

Power supply pins should be decoupled directly to the ground plane using low-inductance, generally ceramic surface-mount capacitors or through-hole mounted ceramic capacitors (limit their lead length less than 1 mm to reduce impedance). The decoupling capacitors should be as close as possible to the IC power pins.

Why IC designers don’t include decoupling capacitors directly inside the chip?

Well, this is a good question, and the answer is quite simple. The capacitance of a capacitor is given by the equation:

Where A represents the surface of the electrode and d the distance between the plates. As you may notice, these days chips are  getting smaller and smaller so adding capacitors inside the chip would considerably increase the size of the package of chip.