From bcbef270884750fb7f55d5ab531655c14ba53444 Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Sat, 4 Jun 2022 09:26:55 -0700 Subject: Named pins on subcomponents. --- library.rb | 12 +++++++++--- test.rb | 15 ++++++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/library.rb b/library.rb index 1963b6e..bddcdea 100644 --- a/library.rb +++ b/library.rb @@ -30,7 +30,13 @@ def define_ic(name, value, pincount, *subparts, &automatic) if parts.size < 1 ic = comp("U", "#{$ic}-#{pincount}", name, value) automatic.call(ic) - subs = subparts.map { | sub | sub.map { | pin | ic[pin] } } + subs = subparts.map do | sub | + if sub.respond_to?(:transform_values) + sub.transform_values { | pin | ic[pin] } + else + sub.map { | pin | ic[pin] } + end + end subs.each do | sub | if sub.size == 2 parts << pair(*sub) @@ -45,8 +51,8 @@ end def stock_ic(name, value, &automatic) case value - when /74.*00/; define_ic(name, value, 14, [1, 2, 3], [4, 5, 6], [13, 12, 11], [10, 9, 8], &automatic) - when /74.*04/; define_ic(name, value, 14, [1, 2], [3, 4], [5, 6], [13, 12], [11, 10], [9, 8], &automatic) + 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) + when /74\D*04$/; define_ic(name, value, 14, [1, 2], [3, 4], [5, 6], [13, 12], [11, 10], [9, 8], &automatic) end end diff --git a/test.rb b/test.rb index e7f8b49..269c9d0 100755 --- a/test.rb +++ b/test.rb @@ -11,10 +11,19 @@ nl = Lace::Netlist.new do vcc - ic[14] - c("100nF") - ic[7] - gnd end) - vcc - led(220) - gnd + define_singleton_method(:nand, stock_ic("nand", "CD74HC00") do | ic | + vcc - ic[14] - c("100nF") - ic[7] - gnd + end) + + g = net("g") + o = net("o") + vcc - btn - g - led(220, "green") - gnd + vcc - btn("orange") - inverter - o - led(220, "white") - gnd - vcc - btn - led(220, "green") - gnd - vcc - btn("orange") - inverter - led(220, "white") - gnd + go = nand + g - go[:a] + o - go[:b] + go[:y] - led(220) - gnd x = vcc - btn("white") x - net("x") - led(220, "amber") - gnd -- cgit v1.2.3