[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: gschem sym files



Kai-Martin Knaak:
> Karl Hammar wrote:
> >> 5, add a tutorial on how to adapt the DRC rules to the local needs
> Well documented examples would take me a long way.

Ok, I'll use http://turkos/git/openhw/wascator_c240/styrkort.sch as an
example.

*****

   How to tell drc2 which tests to skip:

$ gnetlist -g drc2 -o log styrkort.sch > /dev/null 2>&1     
$ gnetlist -g drc2 -o log2 -c '(define dont-check-unconnected-pins 1)' styrkort.sch > /dev/null 2>&1     
$ diff log log2
26,42d25
< Checking unconnected pins...
< ERROR: Unconnected pin U2:11
< ERROR: Unconnected pin U2:12
< ERROR: Unconnected pin U2:13
< ERROR: Unconnected pin U2:14
< ERROR: Unconnected pin U1:28
< ERROR: Unconnected pin U1:19
< ERROR: Unconnected pin U1:20
< ERROR: Unconnected pin U1:22
< ERROR: Unconnected pin Q8:22
< ERROR: Unconnected pin Q8:12
< ERROR: Unconnected pin Q7:22
< ERROR: Unconnected pin Q7:12
< ERROR: Unconnected pin Q6:22
< ERROR: Unconnected pin Q6:12
< ERROR: Unconnected pin Q5:22
< 
50c33
< Found 16 errors.
---
> Found 1 errors.
$ echo '(define dont-check-unconnected-pins 1)' > init.scm                     
$ gnetlist -g drc2 -o log3 -l init.scm styrkort.sch > /dev/null 2>&1
$ diff log2 log3
$

On the global (i.e. for the whole gschem file) level, one can tell drc2
which test to skip, either via an init file (-l option to gnetlist) or 
directly as an string on the command line (-c option).

*****

> > Can you give exaples of local needs?
> Some people like consider any not connected pin an error,

Use default.

**

> others would only expect a warning.

  Provide your own drc-matrix (see last example) with "#\w" in the
  "unconnected" column and line.

$ cat init3.scm
; DRC matrix
;
; #\e: error    #\w: warning   #\c: correct
(if (not (defined? 'drc-matrix))
    (define drc-matrix (list
;  Order is important !
;             unknown in    out   io    oc    oe    pas   tp    tri   clk   pwr unconnected
;unknown
  '(            #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\w )
;in
  '(            #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\w )
;out
  '(            #\c   #\c   #\e   #\w   #\e   #\e   #\c   #\e   #\e   #\c   #\e   #\w )
;io
  '(            #\c   #\c   #\w   #\c   #\w   #\w   #\c   #\w   #\c   #\c   #\w   #\w )
;oc
  '(            #\c   #\c   #\e   #\w   #\e   #\c   #\c   #\e   #\c   #\c   #\e   #\w )
;oe
  '(            #\c   #\c   #\e   #\w   #\c   #\e   #\c   #\e   #\c   #\c   #\e   #\w )
;pas
  '(            #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\w )
;tp
  '(            #\c   #\c   #\e   #\w   #\e   #\e   #\c   #\e   #\e   #\c   #\e   #\w )
;tri
  '(            #\c   #\c   #\e   #\c   #\c   #\c   #\c   #\e   #\c   #\c   #\e   #\w )
;clk
  '(            #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\e   #\w )
;pwr
  '(            #\c   #\c   #\e   #\w   #\e   #\e   #\c   #\e   #\e   #\e   #\c   #\w )
;unconnected
  '(            #\w   #\w   #\w   #\w   #\w   #\w   #\w   #\w   #\w   #\w   #\w   #\w )
)))
$ gnetlist -g drc2 -o log5 -l init3.scm styrkort.sch > /dev/null 2>&1
$ diff log log5
27,41c27,41
< ERROR: Unconnected pin U2:11
< ERROR: Unconnected pin U2:12
< ERROR: Unconnected pin U2:13
< ERROR: Unconnected pin U2:14
< ERROR: Unconnected pin U1:28
< ERROR: Unconnected pin U1:19
< ERROR: Unconnected pin U1:20
< ERROR: Unconnected pin U1:22
< ERROR: Unconnected pin Q8:22
< ERROR: Unconnected pin Q8:12
< ERROR: Unconnected pin Q7:22
< ERROR: Unconnected pin Q7:12
< ERROR: Unconnected pin Q6:22
< ERROR: Unconnected pin Q6:12
< ERROR: Unconnected pin Q5:22
---
> WARNING: Unconnected pin U2:11
> WARNING: Unconnected pin U2:12
> WARNING: Unconnected pin U2:13
> WARNING: Unconnected pin U2:14
> WARNING: Unconnected pin U1:28
> WARNING: Unconnected pin U1:19
> WARNING: Unconnected pin U1:20
> WARNING: Unconnected pin U1:22
> WARNING: Unconnected pin Q8:22
> WARNING: Unconnected pin Q8:12
> WARNING: Unconnected pin Q7:22
> WARNING: Unconnected pin Q7:12
> WARNING: Unconnected pin Q6:22
> WARNING: Unconnected pin Q6:12
> WARNING: Unconnected pin Q5:22
49,50c49,50
< Found 4 warnings.
< Found 16 errors.
---
> Found 19 warnings.
> Found 1 errors.
$

**

> Some might find not connected pins completely acceptable and
> consequently find errors and warnings annoying.

Use:
 gnetlist -g drc2 -o <log file> -c '(define dont-check-unconnected-pins 1)' <sch file>

**

> Digital enthusiasts may add special pin types for different signal
> levels.

Like ECL, TTL, 3.3V, 5V etc.
That is a big TODO.

**

> Analog designers might find it perfectly acceptable to connect pwr
> to in pins.

  drc2 already accepts that, but consider the "pwr" <-> "io" instead
  as an exercise.

  To change warning level for a connection you have to modify/supply
  your version of the drc-matrix. The defaul drc-matrix is defined in
  gnet-drc2.scm. To find that file and get a templete to edit, do

$ locate gnet-drc2.scm
/usr/share/gEDA/scheme/gnet-drc2.scm
$ grep '^; DRC matrix' -A31  /usr/share/gEDA/scheme/gnet-drc2.scm > init.scm
$ cat init.scm
; DRC matrix
;
; #\e: error    #\w: warning   #\c: correct
(if (not (defined? 'drc-matrix))
    (define drc-matrix (list
;  Order is important !
;             unknown in    out   io    oc    oe    pas   tp    tri   clk   pwr unconnected
;unknown
  '(            #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\e )
;in
  '(            #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\e )
;out
  '(            #\c   #\c   #\e   #\w   #\e   #\e   #\c   #\e   #\e   #\c   #\e   #\e )
;io
  '(            #\c   #\c   #\w   #\c   #\w   #\w   #\c   #\w   #\c   #\c   #\w   #\e )
;oc
  '(            #\c   #\c   #\e   #\w   #\e   #\c   #\c   #\e   #\c   #\c   #\e   #\e )
;oe
  '(            #\c   #\c   #\e   #\w   #\c   #\e   #\c   #\e   #\c   #\c   #\e   #\e )
;pas
  '(            #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\e )
;tp
  '(            #\c   #\c   #\e   #\w   #\e   #\e   #\c   #\e   #\e   #\c   #\e   #\e )
;tri
  '(            #\c   #\c   #\e   #\c   #\c   #\c   #\c   #\e   #\c   #\c   #\e   #\e )
;clk
  '(            #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\c   #\e   #\e )
;pwr
  '(            #\c   #\c   #\e   #\w   #\e   #\e   #\c   #\e   #\e   #\e   #\c   #\e )
;unconnected
  '(            #\e   #\e   #\e   #\e   #\e   #\e   #\e   #\e   #\e   #\e   #\e   #\e )
)))
$

  If you look at the line below ";io" where it intersects with column
  "pwr", you see a "#\w". And sure enoght, I get a warning in the
  example above:

$ grep '^WARN.*Q8:A1' -A2 log2 
WARNING: Pin(s) with pintype 'input/output': Q8:A1 Q7:A1 Q6:A1 Q5:A1 
        are connected by net 'Vcc'
        to pin(s) with pintype 'power': U1:4 U1:18 U2:16 U1:6 
$

  Let's get rid of that warning, change the "#\w" to a "#\c". To do
  that, use your favourite editor, and since both pwr <-> io is the
  same as io <-> pwr, you have to do the change in two places
  (see note a).

  I created a new init file, here is the results:

$ diff init.scm init2.scm
15c15
<   '(            #\c   #\c   #\w   #\c   #\w   #\w   #\c   #\w   #\c   #\c   #\w   #\e )
---
>   '(            #\c   #\c   #\w   #\c   #\w   #\w   #\c   #\w   #\c   #\c   #\c   #\e )
29c29
<   '(            #\c   #\c   #\e   #\w   #\e   #\e   #\c   #\e   #\e   #\e   #\c   #\e )
---
>   '(            #\c   #\c   #\e   #\c   #\e   #\e   #\c   #\e   #\e   #\e   #\c   #\e )
$ gnetlist -g drc2 -o log4 -l init2.scm styrkort.sch > /dev/null 2>&1
$ diff log log4 
22,24d21
< WARNING: Pin(s) with pintype 'input/output': Q8:A1 Q7:A1 Q6:A1 Q5:A1 
<       are connected by net 'Vcc'
<       to pin(s) with pintype 'power': U1:4 U1:18 U2:16 U1:6 
49c46
< Found 4 warnings.
---
> Found 3 warnings.
$

  Done!

Note a, there is a published patch [1] to make the drc-matrix lower
triangular so you only have to make the change in one place in the
matrix.

[1] http://www.seul.org/pipermail/geda-user/2010-September/049342.html

**

Regards,
/Karl Hammar

---------
Aspö Data
Lilla Aspö 148
S-742 94 Östhammar
Sweden
+46 173 140 57




_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user