If you’re interested in the answer, ask it yourself.
It seems your opinion is that replying to an existing thread is less useful than starting a new post.
My opinion is that if everyone went around making a new post every time they wanted to talk to people interested in the same topics, there’d be no threads, only a bajillion new posts with no replies.
What’s it to you if I reply to an old thread? You weren’t subscribed to receive notifications of replies to the thread were you? You never commented in this thread before, so why now with a completely asinine off topic response? If you’re not interested, jog on. No one needs your negative ego jamming everything up. I’m not interested in your response and I doubt anyone else is. How is it helpful at all? Go to stack overflow or where ever your ilk get their kicks.
EDIT:
God I hate trolls. But I actually have an update that is ON TOPIC:
I managed to install SKiDL 2.0.1, but I also currently have KiCAD 9.0.2 installed, and the two do not especially play well together. I might have to update the generate_schematic() function since KiCAD 9 doesn’t seem able to import netlists into the schematic editor anymore. (yeah I could probably install KiCAD 5 and make everything easier)
Furthermore I’m having a little trouble with the library/symbol files as well since KiCAD 9 uses a different format, it seems, than from what SKiDL is expecting. Names aren’t quite lining up, and though I can pull library names, device names, and even the pinout list from the symbol editor, it’s a lot of manual work getting things to line up. so vibe coding it through the AI does help make that easier. Copy paste a pinout table, and the SKiDL code is all updated. That’s nice.
I’ll keep at it off and on and see how far I can get. I managed to get some parts imported into the PCB editor from the netlist, but some parts threw errors, and I was hoping for a schematic more than a bunch of parts on a new PCB. Fun fun.
Edit 2: So I managed to get everything working well, and I can get the parts imported into a new PCB through netlist importing. The connections are all mapped out, but at the moment ChatGPT o4, at least, isn’t very good at making circuits. It’s first attempt only included an opamp and an analog switch with a half a dozen resistors. I suggested capacitors, and it added them. I haven’t inspected the circuit at all, because I don’t expect it to be correct, but the interesting part is that this seems to be working. Convert enough kicad projects to skidl and we could train an AI to make actual functioning circuits. I think that’s amazing. Here’s the progress I got so far. I only started this today, and I didn’t have to write a single line of skidl myself, though I did correct a few mistakes early on. The rest got vibe coded. Run the software, copy paste errors, the AI fixes them, and then run the software again. Rinse and repeat. Here’s the code for a synthesizer module the AI thought up and attempted to make a circuit for. If I really wanted to build it, I’d probably have to do it myself or basically teach it how to build the circuit. Still this has been very interesting. Thanks for developing SKiDL. I’m going to have a lot of fun with this.
# SKiDL Script for Dual VCA Switcher (TL074 + CD4053)
from skidl import *
# Setup
import os
os.environ['KICAD_SYMBOL_DIR'] = r'C:\Program Files\KiCad\9.0\share\kicad\symbols'
set_default_tool(KICAD7)
# Power and Reference Nets
vcc = Net('+12V')
vee = Net('-12V')
gnd = Net('GND')
vref = Net('VREF')
# Signal and Control Nets
signal_in = Net('Signal_In')
signal_out = Net('Signal_Out')
cv_a = Net('CV_A')
cv_b = Net('CV_B')
# Create Opamp (TL074)
tl074 = Part('Amplifier_Operational', 'TL074', footprint='Package_DIP:DIP-14_W7.62mm')
# VCA A: U1A
u1a_out = Net('U1A_OUT')
r1 = Part('Device', 'R', footprint='Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder')
r2 = Part('Device', 'R', footprint='Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder')
r6 = Part('Device', 'R', footprint='Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder')
signal_in += r1[1]
r1[2] += tl074[3] # Signal to non-inverting input
cv_a += r2[1]
r2[2] += tl074[2] # CV to inverting input
u1a_out += tl074[1] # Output
r6[1] += tl074[1]
r6[2] += tl074[2] # Feedback
# VCA B: U1B
u1b_out = Net('U1B_OUT')
r3 = Part('Device', 'R', footprint='Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder')
r5 = Part('Device', 'R', footprint='Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder')
r7 = Part('Device', 'R', footprint='Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder')
signal_in += r3[1]
r3[2] += tl074[5] # Signal to non-inverting input
cv_b += r5[1]
r5[2] += tl074[6] # CV to inverting input
u1b_out += tl074[7] # Output
r7[1] += tl074[7]
r7[2] += tl074[6] # Feedback
# Analog Switch: CD4053
cd4053 = Part('Analog_Switch', 'CD4053B', footprint='Package_DIP:DIP-16_W7.62mm')
r4 = Part('Device', 'R', footprint='Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder')
r8 = Part('Device', 'R', footprint='Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder')
u1a_out += r4[1]
r4[2] += cd4053['A0']
u1b_out += cd4053['B0']
# Output Buffer: U1C
r8[1] += cd4053['A']
r8[2] += tl074[8] # Buffer input
signal_out += tl074[14] # Buffer output
# Power Connections
vcc += tl074['4'], cd4053['16']
vee += tl074['11'], cd4053['8']
gnd += cd4053['7']
# Power Supply Decoupling Capacitors
# TL074 (pin 4 = VCC, pin 11 = VEE)
c_tl074_vcc = Part('Device', 'C', value='100n', footprint='Capacitor_SMD:C_0603_1608Metric')
c_tl074_vee = Part('Device', 'C', value='100n', footprint='Capacitor_SMD:C_0603_1608Metric')
c_tl074_bulk_vcc = Part('Device', 'C', value='10u', footprint='Capacitor_SMD:C_1206_3216Metric')
c_tl074_bulk_vee = Part('Device', 'C', value='10u', footprint='Capacitor_SMD:C_1206_3216Metric')
vcc += c_tl074_vcc[1], c_tl074_bulk_vcc[1]
gnd += c_tl074_vcc[2], c_tl074_bulk_vcc[2]
vee += c_tl074_vee[1], c_tl074_bulk_vee[1]
gnd += c_tl074_vee[2], c_tl074_bulk_vee[2]
# CD4053 (pin 16 = VDD, pin 8 = VSS, pin 7 = VEE)
c_cd4053_vdd = Part('Device', 'C', value='100n', footprint='Capacitor_SMD:C_0603_1608Metric')
c_cd4053_vss = Part('Device', 'C', value='100n', footprint='Capacitor_SMD:C_0603_1608Metric')
c_cd4053_bulk_vdd = Part('Device', 'C', value='10u', footprint='Capacitor_SMD:C_1206_3216Metric')
c_cd4053_bulk_vss = Part('Device', 'C', value='10u', footprint='Capacitor_SMD:C_1206_3216Metric')
vcc += c_cd4053_vdd[1], c_cd4053_bulk_vdd[1]
gnd += c_cd4053_vdd[2], c_cd4053_bulk_vdd[2]
gnd += c_cd4053_vss[1], c_cd4053_bulk_vss[1]
c_cd4053_vss[2] += cd4053['8']
c_cd4053_bulk_vss[2] += cd4053['8']
# INH pin (6) tied low to enable switching
cd4053['6'] += gnd
# Generate netlist
generate_netlist()