diff options
| author | Julian Blake Kongslie | 2022-06-04 09:26:55 -0700 |
|---|---|---|
| committer | Julian Blake Kongslie | 2022-06-04 09:26:55 -0700 |
| commit | bcbef270884750fb7f55d5ab531655c14ba53444 (patch) | |
| tree | 9008168cf99d627b0ed625ee530f18ba666a33de | |
| parent | Make IC definitions more self-contained (diff) | |
| download | lace-bcbef270884750fb7f55d5ab531655c14ba53444.tar.xz | |
Named pins on subcomponents.
Diffstat (limited to '')
| -rw-r--r-- | library.rb | 12 | ||||
| -rwxr-xr-x | test.rb | 15 |
2 files changed, 21 insertions, 6 deletions
| @@ -30,7 +30,13 @@ def define_ic(name, value, pincount, *subparts, &automatic) | |||
| 30 | if parts.size < 1 | 30 | if parts.size < 1 |
| 31 | ic = comp("U", "#{$ic}-#{pincount}", name, value) | 31 | ic = comp("U", "#{$ic}-#{pincount}", name, value) |
| 32 | automatic.call(ic) | 32 | automatic.call(ic) |
| 33 | subs = subparts.map { | sub | sub.map { | pin | ic[pin] } } | 33 | subs = subparts.map do | sub | |
| 34 | if sub.respond_to?(:transform_values) | ||
| 35 | sub.transform_values { | pin | ic[pin] } | ||
| 36 | else | ||
| 37 | sub.map { | pin | ic[pin] } | ||
| 38 | end | ||
| 39 | end | ||
| 34 | subs.each do | sub | | 40 | subs.each do | sub | |
| 35 | if sub.size == 2 | 41 | if sub.size == 2 |
| 36 | parts << pair(*sub) | 42 | parts << pair(*sub) |
| @@ -45,8 +51,8 @@ end | |||
| 45 | 51 | ||
| 46 | def stock_ic(name, value, &automatic) | 52 | def stock_ic(name, value, &automatic) |
| 47 | case value | 53 | case value |
| 48 | when /74.*00/; define_ic(name, value, 14, [1, 2, 3], [4, 5, 6], [13, 12, 11], [10, 9, 8], &automatic) | 54 | when /74\D*00$/; define_ic(name, value, 14, {a: 1, b: 2, y: 3}, {a: 4, b: 5, y: 6}, {a: 13, b: 12, y: 11}, {a: 10, b: 9, y: 8}, &automatic) |
| 49 | when /74.*04/; define_ic(name, value, 14, [1, 2], [3, 4], [5, 6], [13, 12], [11, 10], [9, 8], &automatic) | 55 | when /74\D*04$/; define_ic(name, value, 14, [1, 2], [3, 4], [5, 6], [13, 12], [11, 10], [9, 8], &automatic) |
| 50 | end | 56 | end |
| 51 | end | 57 | end |
| 52 | 58 | ||
| @@ -11,10 +11,19 @@ nl = Lace::Netlist.new do | |||
| 11 | vcc - ic[14] - c("100nF") - ic[7] - gnd | 11 | vcc - ic[14] - c("100nF") - ic[7] - gnd |
| 12 | end) | 12 | end) |
| 13 | 13 | ||
| 14 | vcc - led(220) - gnd | 14 | define_singleton_method(:nand, stock_ic("nand", "CD74HC00") do | ic | |
| 15 | vcc - ic[14] - c("100nF") - ic[7] - gnd | ||
| 16 | end) | ||
| 17 | |||
| 18 | g = net("g") | ||
| 19 | o = net("o") | ||
| 20 | vcc - btn - g - led(220, "green") - gnd | ||
| 21 | vcc - btn("orange") - inverter - o - led(220, "white") - gnd | ||
| 15 | 22 | ||
| 16 | vcc - btn - led(220, "green") - gnd | 23 | go = nand |
| 17 | vcc - btn("orange") - inverter - led(220, "white") - gnd | 24 | g - go[:a] |
| 25 | o - go[:b] | ||
| 26 | go[:y] - led(220) - gnd | ||
| 18 | 27 | ||
| 19 | x = vcc - btn("white") | 28 | x = vcc - btn("white") |
| 20 | x - net("x") - led(220, "amber") - gnd | 29 | x - net("x") - led(220, "amber") - gnd |
