0 00:00:00,000 --> 00:00:30,000 Dear viewer, these subtitles were generated by a machine via the service Trint and therefore are (very) buggy. If you are capable, please help us to create good quality subtitles: https://c3subtitles.de/talk/901 Thanks! 1 00:00:14,900 --> 00:00:17,899 My name is Casper, and I 2 00:00:17,900 --> 00:00:20,029 am here to talk to you about 3 00:00:20,030 --> 00:00:22,189 designing PCBs, that's printed 4 00:00:22,190 --> 00:00:23,570 circuit boards with code. 5 00:00:25,480 --> 00:00:27,639 So just a little bit about me, I'm 6 00:00:27,640 --> 00:00:29,499 a freelance electronic engineer and 7 00:00:29,500 --> 00:00:31,599 software developer, and 8 00:00:32,680 --> 00:00:34,839 he pictured here two of my 9 00:00:34,840 --> 00:00:36,969 current projects. One is a virtual 10 00:00:36,970 --> 00:00:38,559 reality check controller. 11 00:00:38,560 --> 00:00:40,929 Another is a Braille eBook 12 00:00:40,930 --> 00:00:42,009 reader. 13 00:00:42,010 --> 00:00:43,479 And I love writing code. 14 00:00:43,480 --> 00:00:46,239 And I love open source and especially 15 00:00:46,240 --> 00:00:47,919 open source electronics. 16 00:00:47,920 --> 00:00:49,899 People coming together, working on 17 00:00:49,900 --> 00:00:51,699 something from all over the globe really 18 00:00:51,700 --> 00:00:54,040 inspires me. So, um, 19 00:00:56,890 --> 00:00:58,989 you know, as I said, I love electronics 20 00:00:58,990 --> 00:01:01,359 and I love code, uh, 21 00:01:01,360 --> 00:01:03,519 but I don't actually enjoy designing 22 00:01:03,520 --> 00:01:05,079 electronics all that much. 23 00:01:05,080 --> 00:01:06,080 Uh. 24 00:01:07,440 --> 00:01:09,829 Uh, I get very frustrated 25 00:01:09,830 --> 00:01:11,989 with the design tools, and 26 00:01:11,990 --> 00:01:14,059 this is how typically you 27 00:01:14,060 --> 00:01:15,589 design a printed circuit board. 28 00:01:15,590 --> 00:01:17,719 You have your schematic tool on one side 29 00:01:17,720 --> 00:01:19,759 where you define your components in the 30 00:01:19,760 --> 00:01:21,679 connections between them, and then you 31 00:01:21,680 --> 00:01:23,989 move over to your layout, to where 32 00:01:23,990 --> 00:01:25,819 you then route those connections and 33 00:01:25,820 --> 00:01:26,900 place your components. 34 00:01:28,560 --> 00:01:29,560 Uh, 35 00:01:30,800 --> 00:01:32,809 so if you're designing digital hardware, 36 00:01:32,810 --> 00:01:33,919 if you're designing something to be 37 00:01:33,920 --> 00:01:35,989 running run FPGA, you can 38 00:01:35,990 --> 00:01:38,479 actually use schematic entry as well. 39 00:01:38,480 --> 00:01:40,609 Uh, but a hardware description 40 00:01:40,610 --> 00:01:43,069 languages were invented in the 80s, 41 00:01:43,070 --> 00:01:45,499 and that's pretty much how 42 00:01:45,500 --> 00:01:47,659 we largely now design digital 43 00:01:47,660 --> 00:01:49,849 circuits, uh, 44 00:01:49,850 --> 00:01:51,949 because, uh, schematic 45 00:01:51,950 --> 00:01:54,439 entry for this sort of tasks becomes 46 00:01:54,440 --> 00:01:55,439 very confusing. 47 00:01:55,440 --> 00:01:57,229 Uh, this is a little puzzle I found. 48 00:01:57,230 --> 00:01:59,089 If you go to the URL there, you can get 49 00:01:59,090 --> 00:02:01,129 it and you can try and solve it. 50 00:02:01,130 --> 00:02:02,130 Um. 51 00:02:05,280 --> 00:02:07,679 So we use code to describe logic 52 00:02:07,680 --> 00:02:09,209 circuits because it's much easier to 53 00:02:09,210 --> 00:02:11,008 manage the complexity. 54 00:02:11,009 --> 00:02:13,259 Uh, so these are known as hardware 55 00:02:13,260 --> 00:02:15,019 description languages. 56 00:02:15,020 --> 00:02:17,129 Uh, this is about a 57 00:02:17,130 --> 00:02:19,229 very log their, um. 58 00:02:22,530 --> 00:02:23,459 Or is it. 59 00:02:23,460 --> 00:02:24,479 Yes, it is. 60 00:02:25,680 --> 00:02:27,839 So if you're doing 61 00:02:27,840 --> 00:02:29,939 schematics and 62 00:02:29,940 --> 00:02:31,769 especially with high Pinchao and 63 00:02:31,770 --> 00:02:33,989 components such as ESPNews 64 00:02:33,990 --> 00:02:36,839 schematics are really just, uh, 65 00:02:36,840 --> 00:02:38,489 there's a lot of labels and they jump all 66 00:02:38,490 --> 00:02:39,989 over the place and it's kind of hard to 67 00:02:39,990 --> 00:02:41,459 follow what's going on, really. 68 00:02:41,460 --> 00:02:43,919 And it's very tedious to find 69 00:02:43,920 --> 00:02:46,259 hundreds of connections that just 70 00:02:46,260 --> 00:02:47,909 kind of go in parallel. 71 00:02:47,910 --> 00:02:49,979 So, uh, that's 72 00:02:49,980 --> 00:02:52,409 the motivation behind 73 00:02:52,410 --> 00:02:54,539 exploring the space of of using 74 00:02:54,540 --> 00:02:56,909 code to, uh, to 75 00:02:56,910 --> 00:02:59,279 define, uh, to define 76 00:02:59,280 --> 00:03:01,409 neckless from or to 77 00:03:01,410 --> 00:03:02,759 to make schematics. 78 00:03:02,760 --> 00:03:05,789 So can we use HD for analog circuits? 79 00:03:05,790 --> 00:03:07,959 Well, there's actually, 80 00:03:07,960 --> 00:03:10,169 uh, analog and mixed signal extensions 81 00:03:10,170 --> 00:03:12,719 to the popular HD, 82 00:03:12,720 --> 00:03:14,819 uh, very like a was defined in 83 00:03:14,820 --> 00:03:16,979 1993 and it was 84 00:03:16,980 --> 00:03:19,049 then merged into AMS, which 85 00:03:19,050 --> 00:03:20,729 stands for analog and mixed signal. 86 00:03:20,730 --> 00:03:22,089 And in 2000, 87 00:03:23,650 --> 00:03:26,739 um, there's also, uh, 88 00:03:26,740 --> 00:03:28,619 uh, analog and mixed signal extension for 89 00:03:28,620 --> 00:03:29,729 video. 90 00:03:29,730 --> 00:03:31,799 Uh, and there's another one that 91 00:03:31,800 --> 00:03:35,249 I came across in a paper from 1999 92 00:03:35,250 --> 00:03:36,629 called The Circuit Description Language, 93 00:03:36,630 --> 00:03:38,609 though I couldn't find any implementation 94 00:03:38,610 --> 00:03:40,769 of it. Uh, 95 00:03:40,770 --> 00:03:43,289 so the focus of these is simulation 96 00:03:43,290 --> 00:03:44,789 and verification, really. 97 00:03:44,790 --> 00:03:47,069 So rather than just do pure schematic 98 00:03:47,070 --> 00:03:49,259 entry, you are describing the behavior 99 00:03:49,260 --> 00:03:51,749 of your circuit and you need to know 100 00:03:51,750 --> 00:03:53,819 a lot of details about the behavior of 101 00:03:53,820 --> 00:03:55,229 your components. 102 00:03:55,230 --> 00:03:56,230 So. 103 00:03:57,360 --> 00:03:58,379 What we want. 104 00:03:58,380 --> 00:04:00,449 Well, what I want anyway, is something 105 00:04:00,450 --> 00:04:02,729 to do, schematic entry 106 00:04:02,730 --> 00:04:04,169 to do create net lists 107 00:04:05,430 --> 00:04:07,559 rather than an 108 00:04:07,560 --> 00:04:09,719 analog simulation. 109 00:04:09,720 --> 00:04:12,180 Because it's a lot less work, um, 110 00:04:13,380 --> 00:04:15,509 so I came across this, which is 111 00:04:15,510 --> 00:04:17,909 called the PCB 112 00:04:17,910 --> 00:04:20,219 hardware description language, 113 00:04:20,220 --> 00:04:23,089 and this is a project from 2011. 114 00:04:23,090 --> 00:04:25,259 Uh, it has quite a clean syntax 115 00:04:25,260 --> 00:04:27,509 for defining, uh, 116 00:04:27,510 --> 00:04:29,639 devices and their connections 117 00:04:29,640 --> 00:04:31,199 is the more advanced features that kind 118 00:04:31,200 --> 00:04:32,969 of didn't fit on this slide here. 119 00:04:32,970 --> 00:04:35,069 Uh, but 120 00:04:35,070 --> 00:04:37,079 there's this kind of slight notation to 121 00:04:37,080 --> 00:04:39,399 do connections in parallel and 122 00:04:39,400 --> 00:04:41,489 of and you can it 123 00:04:41,490 --> 00:04:43,649 has a sort of, uh, native modular system. 124 00:04:43,650 --> 00:04:45,599 So you have all your different circuits 125 00:04:45,600 --> 00:04:47,459 spread across different files. 126 00:04:47,460 --> 00:04:49,709 So it's a new language, 127 00:04:49,710 --> 00:04:52,589 uh, which has its pros and cons. 128 00:04:52,590 --> 00:04:54,749 And you get a clean syntax, 129 00:04:54,750 --> 00:04:56,969 uh, but it's not as expressive as 130 00:04:56,970 --> 00:04:58,949 a general purpose language. 131 00:04:58,950 --> 00:05:00,239 Uh, this is a compiler. 132 00:05:00,240 --> 00:05:02,369 It's written in Java and 133 00:05:02,370 --> 00:05:04,349 it cannot binet this for quite a few 134 00:05:04,350 --> 00:05:06,509 different PCB design tools. 135 00:05:06,510 --> 00:05:07,799 It does some natively. 136 00:05:07,800 --> 00:05:10,139 And then, uh, there's some translation 137 00:05:10,140 --> 00:05:11,339 software for others. 138 00:05:12,820 --> 00:05:14,529 It also has an Eclipse plugin, so you can 139 00:05:14,530 --> 00:05:15,819 write descriptions with the help of an 140 00:05:15,820 --> 00:05:16,999 idea, too. 141 00:05:17,000 --> 00:05:19,129 I didn't manage to try this yet. 142 00:05:19,130 --> 00:05:20,130 Um, 143 00:05:21,400 --> 00:05:22,869 the next one I came across is skiddle. 144 00:05:22,870 --> 00:05:24,699 So this is Python. 145 00:05:24,700 --> 00:05:26,889 Um, there's a bit 146 00:05:26,890 --> 00:05:28,719 of operator overloading going on here. 147 00:05:28,720 --> 00:05:30,459 So even if you're used to reading Python, 148 00:05:30,460 --> 00:05:32,679 you might be a bit confused, but 149 00:05:32,680 --> 00:05:34,329 it's essentially a set of classes to help 150 00:05:34,330 --> 00:05:35,709 you design circuits. 151 00:05:35,710 --> 00:05:37,959 And you can do the rest of your design 152 00:05:37,960 --> 00:05:40,089 in the kickout layout to, 153 00:05:40,090 --> 00:05:42,429 um, there's another 154 00:05:42,430 --> 00:05:44,619 recent one, which is another 155 00:05:44,620 --> 00:05:46,869 reason, uh, kind of embedded the 156 00:05:46,870 --> 00:05:49,119 domain space civic language for 157 00:05:49,120 --> 00:05:51,219 designing circuits in Python, which is my 158 00:05:51,220 --> 00:05:52,289 circuit. 159 00:05:52,290 --> 00:05:53,290 Uh. 160 00:05:54,470 --> 00:05:56,659 And this is also this 161 00:05:56,660 --> 00:05:58,369 is quite in flux at the moment, so this 162 00:05:58,370 --> 00:05:59,809 slide kind of went out of date in the 163 00:05:59,810 --> 00:06:02,179 last few days on the example 164 00:06:02,180 --> 00:06:04,489 of how the circuit is defined 165 00:06:04,490 --> 00:06:06,589 there. And it has 166 00:06:06,590 --> 00:06:08,239 some very interesting experimental 167 00:06:08,240 --> 00:06:09,289 features. 168 00:06:09,290 --> 00:06:11,419 Uh, so 169 00:06:11,420 --> 00:06:13,309 one of one of the one of those ideas is 170 00:06:13,310 --> 00:06:16,099 to break your components up into into 171 00:06:16,100 --> 00:06:18,199 different, uh, sub functions and 172 00:06:18,200 --> 00:06:20,119 then to find connections on those. 173 00:06:20,120 --> 00:06:22,909 And it also does, uh, 174 00:06:22,910 --> 00:06:25,009 footprint definitions and layout. 175 00:06:25,010 --> 00:06:27,199 Um, so. 176 00:06:30,170 --> 00:06:32,540 Skittle and pie circuit, the the 177 00:06:34,400 --> 00:06:36,709 the pros of it really you that you've you 178 00:06:36,710 --> 00:06:38,779 can define something once 179 00:06:38,780 --> 00:06:41,209 and reuse it, that's the idea of it. 180 00:06:41,210 --> 00:06:43,579 And you can use Falo slice 181 00:06:43,580 --> 00:06:45,979 notation and other programing features 182 00:06:45,980 --> 00:06:48,169 to, uh, speed up the design 183 00:06:48,170 --> 00:06:49,170 process. 184 00:06:49,790 --> 00:06:50,659 There's some issues with it. 185 00:06:50,660 --> 00:06:53,359 So it's hard to visualize what's going on 186 00:06:53,360 --> 00:06:56,149 from code to your 187 00:06:56,150 --> 00:06:58,219 actual Netlist 188 00:06:58,220 --> 00:06:59,220 or your circuit. 189 00:07:00,530 --> 00:07:02,449 Uh, circuit definitions can still be very 190 00:07:02,450 --> 00:07:03,529 tedious, so 191 00:07:05,150 --> 00:07:07,579 it's hard to associate footprint's 192 00:07:07,580 --> 00:07:09,409 and then make sure those footprints are 193 00:07:09,410 --> 00:07:11,659 right. Make sure your 194 00:07:11,660 --> 00:07:12,859 connections are right. 195 00:07:12,860 --> 00:07:14,959 And if you if there's any mistake in 196 00:07:14,960 --> 00:07:17,209 there, it can be it could would 197 00:07:17,210 --> 00:07:18,380 be quite hard to debug. 198 00:07:19,490 --> 00:07:21,829 So I'm going to address some of these, 199 00:07:21,830 --> 00:07:24,329 um, visualizations. 200 00:07:24,330 --> 00:07:26,819 So even though I find drawing 201 00:07:26,820 --> 00:07:28,579 schematics quite tedious, I like to read 202 00:07:28,580 --> 00:07:30,709 them and I like to refer to them. 203 00:07:30,710 --> 00:07:32,389 They're really useful. 204 00:07:32,390 --> 00:07:34,759 Uh, uh, visual 205 00:07:34,760 --> 00:07:36,829 too. So, 206 00:07:36,830 --> 00:07:38,959 um, I 207 00:07:38,960 --> 00:07:40,609 was experimenting a bit with trying to 208 00:07:40,610 --> 00:07:42,559 add visualizations to some of these 209 00:07:42,560 --> 00:07:44,719 languages, and I contributed 210 00:07:44,720 --> 00:07:45,799 this to skittled. 211 00:07:45,800 --> 00:07:48,259 So this is, uh, 212 00:07:48,260 --> 00:07:49,639 graph is graph. If you don't know. 213 00:07:49,640 --> 00:07:51,559 Graph is it's a brilliant program where 214 00:07:51,560 --> 00:07:53,809 you can program it programmatically, 215 00:07:53,810 --> 00:07:56,329 define your, uh, 216 00:07:56,330 --> 00:07:57,469 graphs. 217 00:07:57,470 --> 00:07:58,699 And so. 218 00:08:02,480 --> 00:08:04,879 So I tried to make this look 219 00:08:04,880 --> 00:08:06,589 kind of similar to a schematic, so, you 220 00:08:06,590 --> 00:08:08,449 know what's going on, but it's obviously 221 00:08:08,450 --> 00:08:10,669 it's not a schematic, but it 222 00:08:10,670 --> 00:08:11,659 has similarities. 223 00:08:11,660 --> 00:08:13,759 And we haven't really tried to 224 00:08:13,760 --> 00:08:15,559 scale this up yet. 225 00:08:15,560 --> 00:08:17,809 But this 226 00:08:17,810 --> 00:08:20,359 is kind of the initial experiment, 227 00:08:20,360 --> 00:08:22,549 um, by circuit already 228 00:08:22,550 --> 00:08:25,379 has a graph as output as well, 229 00:08:25,380 --> 00:08:27,709 uh, which the creator, 230 00:08:27,710 --> 00:08:29,099 David Kraven, did. 231 00:08:29,100 --> 00:08:31,459 Uh, the reason 232 00:08:31,460 --> 00:08:33,139 this looks like this is because in 233 00:08:33,140 --> 00:08:35,158 Pieszecki you can do layout as well. 234 00:08:35,159 --> 00:08:37,699 So there's, uh, there's 235 00:08:37,700 --> 00:08:39,619 initial implementation of a sort of 236 00:08:39,620 --> 00:08:41,389 interactive viewer where you can click 237 00:08:41,390 --> 00:08:44,029 on, uh, your nodes 238 00:08:44,030 --> 00:08:46,309 on the graph and then it highlights 239 00:08:46,310 --> 00:08:48,859 what's going on in your layout. 240 00:08:48,860 --> 00:08:49,860 Um. 241 00:08:51,740 --> 00:08:53,719 So quite recently, I came across this 242 00:08:53,720 --> 00:08:55,519 project called Netlist Asaji, and that 243 00:08:55,520 --> 00:08:58,099 takes your Yosses, uh, 244 00:08:58,100 --> 00:09:01,069 so your your, uh, 245 00:09:01,070 --> 00:09:03,589 output from very long, uh, 246 00:09:03,590 --> 00:09:05,719 and it tries to 247 00:09:05,720 --> 00:09:07,399 well it draws quite, 248 00:09:08,510 --> 00:09:10,489 quite good, quite well. 249 00:09:10,490 --> 00:09:12,499 I'm really impressed with the schematics 250 00:09:12,500 --> 00:09:13,500 that it comes up with. 251 00:09:14,660 --> 00:09:15,739 This is using Clay. 252 00:09:15,740 --> 00:09:17,809 Yes. Or well, very soon it's going to 253 00:09:17,810 --> 00:09:19,879 be using the the 254 00:09:19,880 --> 00:09:21,229 successor, which is outrageous. 255 00:09:21,230 --> 00:09:23,539 So that's the eclipse layout, Colonel. 256 00:09:23,540 --> 00:09:26,089 And that uses very similar algorithms 257 00:09:26,090 --> 00:09:27,889 to what's being used in graphics to 258 00:09:27,890 --> 00:09:29,599 layout these graphs. 259 00:09:29,600 --> 00:09:30,600 Um. 260 00:09:33,120 --> 00:09:35,429 So me and the 261 00:09:35,430 --> 00:09:36,959 creators, Neil Turley, have been 262 00:09:36,960 --> 00:09:39,059 experimenting a bit with you, 263 00:09:39,060 --> 00:09:41,459 using this for analog and mixed signal 264 00:09:41,460 --> 00:09:43,049 schematics, and these are some of the 265 00:09:43,050 --> 00:09:45,179 initial, uh, kind of 266 00:09:45,180 --> 00:09:47,609 products of that experimentation. 267 00:09:47,610 --> 00:09:49,979 And while it's not exactly 268 00:09:49,980 --> 00:09:51,599 what people will draw, it's quite 269 00:09:51,600 --> 00:09:53,189 readable. 270 00:09:53,190 --> 00:09:55,829 And, um, 271 00:09:55,830 --> 00:09:57,959 I'm I'm I'm fairly happy with it. 272 00:09:57,960 --> 00:10:00,419 Something the notes about is that the 273 00:10:00,420 --> 00:10:02,789 the flow of it has to be 274 00:10:02,790 --> 00:10:05,009 defined. So your your schematics 275 00:10:05,010 --> 00:10:07,109 will generally flow using 276 00:10:07,110 --> 00:10:10,289 this from, uh, 277 00:10:10,290 --> 00:10:12,509 the follow up up to 278 00:10:12,510 --> 00:10:14,759 down and and left 279 00:10:14,760 --> 00:10:15,959 to right. 280 00:10:15,960 --> 00:10:18,029 So as we scale this up, it'll 281 00:10:18,030 --> 00:10:20,069 be interesting to see if that actually 282 00:10:20,070 --> 00:10:22,319 doesn't make it. 283 00:10:22,320 --> 00:10:24,479 I think it will make, uh, 284 00:10:24,480 --> 00:10:26,229 schematics much more readable because all 285 00:10:26,230 --> 00:10:28,079 the schematics defined in this way will 286 00:10:28,080 --> 00:10:30,179 flow in the same direction and will be 287 00:10:30,180 --> 00:10:31,539 easier to follow. 288 00:10:31,540 --> 00:10:34,019 Uh, it'll be interesting to see 289 00:10:34,020 --> 00:10:36,149 how to scale this up for 290 00:10:36,150 --> 00:10:38,799 higher hierarchical schematics. 291 00:10:38,800 --> 00:10:41,039 Um, so I'm 292 00:10:41,040 --> 00:10:43,199 really looking forward to experimenting 293 00:10:43,200 --> 00:10:44,739 more with this. 294 00:10:44,740 --> 00:10:46,799 So kind of on the 295 00:10:46,800 --> 00:10:49,049 second point, that is still quite 296 00:10:49,050 --> 00:10:51,059 tedious to actually define your circuits 297 00:10:51,060 --> 00:10:52,099 even in code. 298 00:10:52,100 --> 00:10:53,100 Um. 299 00:10:54,820 --> 00:10:57,069 Ah, I, I created 300 00:10:57,070 --> 00:10:59,529 something called, uh, Electro Grammar, 301 00:10:59,530 --> 00:11:02,349 which is currently a JavaScript module 302 00:11:02,350 --> 00:11:04,569 to pass electronic component 303 00:11:04,570 --> 00:11:05,839 descriptions. 304 00:11:05,840 --> 00:11:08,019 Uh, so the idea here 305 00:11:08,020 --> 00:11:10,779 is that as electronic 306 00:11:10,780 --> 00:11:12,519 hobbyists or engineers, we already use 307 00:11:12,520 --> 00:11:14,739 quite a specific language 308 00:11:14,740 --> 00:11:16,809 to restrict to language 309 00:11:16,810 --> 00:11:19,059 to to describe what 310 00:11:19,060 --> 00:11:21,189 our circuits and the components. 311 00:11:21,190 --> 00:11:22,239 So, uh. 312 00:11:24,170 --> 00:11:26,449 If we if we take advantage of that, 313 00:11:26,450 --> 00:11:29,149 what people already know, we could 314 00:11:29,150 --> 00:11:31,249 get a use that for as 315 00:11:31,250 --> 00:11:33,529 a programmatic input as well. 316 00:11:33,530 --> 00:11:35,629 So as it as I said, this 317 00:11:35,630 --> 00:11:36,649 is a JavaScript module. 318 00:11:36,650 --> 00:11:38,119 I'm working on a python part to 319 00:11:38,120 --> 00:11:40,189 contribute to that that to these 320 00:11:40,190 --> 00:11:42,409 other, uh, domain 321 00:11:42,410 --> 00:11:44,059 specific languages in Python. 322 00:11:45,590 --> 00:11:46,590 Um. 323 00:11:53,030 --> 00:11:54,030 So. 324 00:11:55,350 --> 00:11:57,869 I've been playing with this idea of also 325 00:11:57,870 --> 00:12:00,329 kind of, uh, creating another another 326 00:12:00,330 --> 00:12:02,369 domain specific language possibly in 327 00:12:02,370 --> 00:12:04,049 JavaScript, uh, 328 00:12:05,340 --> 00:12:07,439 which just to confirm what's law, which 329 00:12:07,440 --> 00:12:08,909 is everything that can be written in 330 00:12:08,910 --> 00:12:09,929 JavaScript, will be written in 331 00:12:09,930 --> 00:12:10,889 JavaScript. 332 00:12:10,890 --> 00:12:11,890 Um. 333 00:12:13,600 --> 00:12:15,669 So my goals 334 00:12:15,670 --> 00:12:17,859 with this would be to make it easier 335 00:12:17,860 --> 00:12:20,109 to design a reason about certain 336 00:12:20,110 --> 00:12:22,209 circuits and use static 337 00:12:22,210 --> 00:12:24,459 analysis to make it 338 00:12:24,460 --> 00:12:27,849 very hard to create bugs and 339 00:12:27,850 --> 00:12:30,339 weather, JavaScript is the best, uh, 340 00:12:30,340 --> 00:12:32,529 uh, choice for that goal. 341 00:12:32,530 --> 00:12:34,719 I'm not sure yet. So maybe at some 342 00:12:34,720 --> 00:12:36,319 point we will switch language. 343 00:12:36,320 --> 00:12:38,549 Uh, and, 344 00:12:38,550 --> 00:12:39,550 uh. 345 00:12:40,450 --> 00:12:42,399 Yes, I'd love to have an interactive 346 00:12:42,400 --> 00:12:43,749 editor where you can visualize your 347 00:12:43,750 --> 00:12:45,889 circuit with something, 348 00:12:45,890 --> 00:12:48,369 uh, something like, uh, Netlist SPG 349 00:12:48,370 --> 00:12:50,529 and edit the code 350 00:12:50,530 --> 00:12:51,530 at the same time. 351 00:12:52,810 --> 00:12:55,179 So you're probably wondering about, uh, 352 00:12:55,180 --> 00:12:57,669 whether you should use these projects 353 00:12:57,670 --> 00:12:59,199 to define circuits. 354 00:12:59,200 --> 00:13:01,719 And I don't know. 355 00:13:01,720 --> 00:13:03,759 I think if you're interested in the idea, 356 00:13:03,760 --> 00:13:05,469 you should definitely try it out. 357 00:13:05,470 --> 00:13:08,139 I wouldn't use it for anything 358 00:13:08,140 --> 00:13:09,140 important yet. 359 00:13:10,450 --> 00:13:12,639 Um, so 360 00:13:12,640 --> 00:13:15,309 Dell was created and it's 361 00:13:15,310 --> 00:13:17,589 I think when I tried it, it's 362 00:13:17,590 --> 00:13:20,019 it's it's it it works for previous 363 00:13:20,020 --> 00:13:21,689 versions of ego and not news. 364 00:13:21,690 --> 00:13:23,889 So, um, I 365 00:13:23,890 --> 00:13:26,299 think it is it hasn't seen much use. 366 00:13:26,300 --> 00:13:28,449 So there's been some bitrate skiddle 367 00:13:28,450 --> 00:13:30,579 I would say is alfer. 368 00:13:30,580 --> 00:13:32,649 I sort of just coming up with these 369 00:13:32,650 --> 00:13:35,019 terms, these are not official kind of 370 00:13:35,020 --> 00:13:36,319 from the creators. 371 00:13:36,320 --> 00:13:38,409 Um and my own 372 00:13:38,410 --> 00:13:40,149 experience, I haven't even got started 373 00:13:40,150 --> 00:13:41,150 yet, so. 374 00:13:42,910 --> 00:13:44,959 I've glossed over a bit, um, 375 00:13:46,920 --> 00:13:48,989 the layout and footprints, but there's 376 00:13:48,990 --> 00:13:51,239 there's domain specific languages 377 00:13:51,240 --> 00:13:53,789 as well for creating footprints 378 00:13:53,790 --> 00:13:54,779 and layouts. 379 00:13:54,780 --> 00:13:57,629 Kickout Matri is one for kickout. 380 00:13:57,630 --> 00:14:00,179 Uh, and 381 00:14:00,180 --> 00:14:02,969 I haven't tried it, but it looks 382 00:14:02,970 --> 00:14:04,499 pretty good, actually. And people do use 383 00:14:04,500 --> 00:14:06,809 it quite a bit, uh, in 384 00:14:06,810 --> 00:14:07,810 my circuit. 385 00:14:08,970 --> 00:14:11,349 Uh, there's also, uh, 386 00:14:11,350 --> 00:14:13,679 a language in it for creating footprints 387 00:14:13,680 --> 00:14:15,839 and, uh, there's 388 00:14:15,840 --> 00:14:18,359 some experimental layout and 389 00:14:18,360 --> 00:14:20,939 routine using Asanti Sarver's, 390 00:14:20,940 --> 00:14:21,940 um. 391 00:14:24,000 --> 00:14:26,069 I also created an experiment about a 392 00:14:26,070 --> 00:14:28,469 year ago to mix 393 00:14:28,470 --> 00:14:30,689 rocket scheme and s 394 00:14:30,690 --> 00:14:32,460 expressions, uh, 395 00:14:34,140 --> 00:14:36,209 the expression format into an 396 00:14:36,210 --> 00:14:37,109 editor. 397 00:14:37,110 --> 00:14:39,509 Uh, though that hasn't seen much 398 00:14:39,510 --> 00:14:40,689 work lately. 399 00:14:40,690 --> 00:14:41,690 Um. 400 00:14:43,310 --> 00:14:44,310 So. 401 00:14:45,570 --> 00:14:46,570 I guess the question is 402 00:14:48,150 --> 00:14:50,849 just to step back a bit, what what 403 00:14:50,850 --> 00:14:52,769 what do we want to achieve by making 404 00:14:52,770 --> 00:14:55,439 hardware design more like software? 405 00:14:55,440 --> 00:14:57,749 And really, we want to be able to, 406 00:14:57,750 --> 00:14:58,750 um, 407 00:14:59,820 --> 00:15:02,369 we want to be able to have 408 00:15:02,370 --> 00:15:04,499 a fast iteration cycles and iterate on 409 00:15:04,500 --> 00:15:06,839 our design so that we 410 00:15:06,840 --> 00:15:08,850 we get to somewhere 411 00:15:10,770 --> 00:15:13,439 quicker if 412 00:15:13,440 --> 00:15:15,749 we want to use programing constructs 413 00:15:15,750 --> 00:15:17,849 for a faster 414 00:15:17,850 --> 00:15:19,229 and better design process. 415 00:15:19,230 --> 00:15:21,209 So I've kind of talked a lot about that 416 00:15:21,210 --> 00:15:23,369 already. And really we want 417 00:15:23,370 --> 00:15:25,649 modularity and reusability. 418 00:15:27,570 --> 00:15:28,579 So 419 00:15:29,880 --> 00:15:32,009 the I haven't covered much of that, but 420 00:15:32,010 --> 00:15:34,469 all of these languages really have, 421 00:15:34,470 --> 00:15:36,629 uh, modular systems 422 00:15:36,630 --> 00:15:38,909 so that you can reuse bits of code and 423 00:15:38,910 --> 00:15:40,919 and hook onto them and. 424 00:15:43,840 --> 00:15:45,969 Yeah, hopefully make use of other 425 00:15:45,970 --> 00:15:47,739 people's work and kind of collaborate in 426 00:15:47,740 --> 00:15:49,929 that way, and 427 00:15:49,930 --> 00:15:52,029 I'd be amazed to mention, not to mention 428 00:15:52,030 --> 00:15:54,219 my own project here, 429 00:15:54,220 --> 00:15:56,409 which is a website, 430 00:15:56,410 --> 00:15:57,789 a service to 431 00:15:59,830 --> 00:16:01,989 kind of a registry for for electronic 432 00:16:01,990 --> 00:16:03,069 designs. 433 00:16:03,070 --> 00:16:05,439 So my hope here is really that, 434 00:16:05,440 --> 00:16:06,440 um. 435 00:16:07,630 --> 00:16:09,699 That this can become a 436 00:16:09,700 --> 00:16:12,339 collaborative space for 437 00:16:12,340 --> 00:16:14,739 people to reuse other people's 438 00:16:14,740 --> 00:16:16,299 circuits, um. 439 00:16:19,580 --> 00:16:21,599 So I think I've finished a bit earlier, 440 00:16:21,600 --> 00:16:23,839 um, I really want to thank 441 00:16:23,840 --> 00:16:25,399 all the creators of all these projects 442 00:16:25,400 --> 00:16:26,929 because really largely I'm presenting 443 00:16:26,930 --> 00:16:28,309 other people's works and kind of my 444 00:16:28,310 --> 00:16:29,310 thoughts on top of that. 445 00:16:30,620 --> 00:16:33,259 So Brendan Nelson, uh, 446 00:16:33,260 --> 00:16:35,449 and and others that 447 00:16:35,450 --> 00:16:37,519 have created Dave Vanderbilt 448 00:16:37,520 --> 00:16:40,139 on skiddle and David Kraven on 449 00:16:40,140 --> 00:16:42,619 circuit and Neil Turley 450 00:16:42,620 --> 00:16:44,149 for analysis as assuages. 451 00:16:44,150 --> 00:16:45,769 And of course, all the contributors to 452 00:16:45,770 --> 00:16:48,109 Gref is an elk that make this kind of 453 00:16:48,110 --> 00:16:49,639 experimentation possible. 454 00:17:01,970 --> 00:17:04,098 We go now to the Q 455 00:17:04,099 --> 00:17:06,739 and A, the signal like Angels signals 456 00:17:06,740 --> 00:17:08,838 that the Internet has no questions. 457 00:17:08,839 --> 00:17:11,088 So please line up at the microphones 458 00:17:11,089 --> 00:17:13,338 if you have any questions 459 00:17:13,339 --> 00:17:15,588 for our speaker. COSPAR, 460 00:17:15,589 --> 00:17:17,479 there is someone already ready at 461 00:17:17,480 --> 00:17:19,399 microphone number two, please. 462 00:17:19,400 --> 00:17:21,529 Um, which of the solutions 463 00:17:21,530 --> 00:17:23,779 is most robust if you want to do 464 00:17:23,780 --> 00:17:26,088 simulations, or is it possible 465 00:17:26,089 --> 00:17:27,679 maybe to export it to a space or 466 00:17:27,680 --> 00:17:28,680 something? 467 00:17:29,780 --> 00:17:30,780 Who? 468 00:17:31,160 --> 00:17:32,160 Um, 469 00:17:33,320 --> 00:17:34,320 the. 470 00:17:34,760 --> 00:17:36,829 I don't know, I think if you want to 471 00:17:36,830 --> 00:17:38,599 do a simulation, you should look into the 472 00:17:38,600 --> 00:17:41,269 the various solutions 473 00:17:41,270 --> 00:17:43,489 and possibly or one you probably 474 00:17:43,490 --> 00:17:45,019 don't want to write spies directly. 475 00:17:46,130 --> 00:17:48,119 Yeah, thanks. 476 00:17:49,250 --> 00:17:50,660 Microphone number four, please. 477 00:17:51,830 --> 00:17:54,199 Oh, uh, can you say something 478 00:17:54,200 --> 00:17:56,629 about the process, the process 479 00:17:56,630 --> 00:17:59,899 of the placement of the circuitry? 480 00:17:59,900 --> 00:18:02,089 So as the interface to the 481 00:18:02,090 --> 00:18:04,159 spies is one very interesting 482 00:18:04,160 --> 00:18:06,259 aspect, but on the other hand, I 483 00:18:06,260 --> 00:18:08,749 want to have an interface 484 00:18:08,750 --> 00:18:10,849 for the actual placing of the 485 00:18:10,850 --> 00:18:12,019 components. 486 00:18:12,020 --> 00:18:13,939 Did you think about this? 487 00:18:13,940 --> 00:18:16,069 Uh, yeah. So, uh, 488 00:18:16,070 --> 00:18:18,529 uh, so for both. 489 00:18:18,530 --> 00:18:20,899 Well, for Dell, you really exposed 490 00:18:20,900 --> 00:18:23,479 to Ocado ego or then 491 00:18:23,480 --> 00:18:25,819 use the translation program to 492 00:18:25,820 --> 00:18:28,229 translate it to another program. 493 00:18:28,230 --> 00:18:30,439 Um, so you then 494 00:18:30,440 --> 00:18:33,199 you do your layout in those programs. 495 00:18:33,200 --> 00:18:35,509 Uh, the same for scale 496 00:18:35,510 --> 00:18:37,319 you export to Python. 497 00:18:37,320 --> 00:18:39,379 Uh, sorry to kickout and 498 00:18:39,380 --> 00:18:41,739 then do your layout in kickout seconds. 499 00:18:41,740 --> 00:18:44,629 It's only one really uh, experimenting 500 00:18:44,630 --> 00:18:47,959 with doing layout programmatically. 501 00:18:47,960 --> 00:18:48,960 Um. 502 00:18:55,780 --> 00:18:57,939 Microphone number three, please. 503 00:18:57,940 --> 00:19:00,519 Are your experiments with Netlist 504 00:19:00,520 --> 00:19:02,949 SVG Skins published anywhere 505 00:19:02,950 --> 00:19:05,049 so that we can build on 506 00:19:05,050 --> 00:19:06,159 that and yeah. 507 00:19:06,160 --> 00:19:07,719 Working on stuff. 508 00:19:07,720 --> 00:19:09,739 Yeah, yeah, they merged into Netlist, 509 00:19:09,740 --> 00:19:11,219 says Fidge. 510 00:19:11,220 --> 00:19:13,419 It's not only my work, it's Neil 511 00:19:13,420 --> 00:19:15,429 Turley working on it as well. 512 00:19:15,430 --> 00:19:16,899 We're kind of both experimenting on it 513 00:19:16,900 --> 00:19:18,429 and it's just being merged into the 514 00:19:18,430 --> 00:19:20,289 massive branch of landlessness squidgy 515 00:19:20,290 --> 00:19:22,359 and all the other links are in 516 00:19:22,360 --> 00:19:24,209 the FA plan. 517 00:19:24,210 --> 00:19:26,499 Uh, does that include the stuff 518 00:19:26,500 --> 00:19:28,359 to interface it with the other programing 519 00:19:28,360 --> 00:19:29,589 languages you listed above? 520 00:19:30,640 --> 00:19:31,629 Uh, no. 521 00:19:31,630 --> 00:19:33,939 Well, that's kind of, uh, 522 00:19:33,940 --> 00:19:36,189 largely imaginary at this point. 523 00:19:36,190 --> 00:19:38,409 So what we need to do is Outpost's 524 00:19:38,410 --> 00:19:41,709 up, uh, Yosses Netlist, 525 00:19:41,710 --> 00:19:43,809 uh, and then use less 526 00:19:43,810 --> 00:19:44,810 SPG 527 00:19:46,720 --> 00:19:48,789 for that. It's it seems pretty 528 00:19:48,790 --> 00:19:50,949 straightforward to once we get around 529 00:19:50,950 --> 00:19:52,779 to it, I think, OK, 530 00:19:54,310 --> 00:19:56,019 there is someone that's microphone number 531 00:19:56,020 --> 00:19:57,020 four. 532 00:19:57,640 --> 00:20:00,009 OK, so my question is, 533 00:20:00,010 --> 00:20:02,709 do you think it would be possible to 534 00:20:02,710 --> 00:20:05,269 create an automatic router constraint, 535 00:20:05,270 --> 00:20:07,599 perhaps based that could 536 00:20:07,600 --> 00:20:09,909 actually work for placement 537 00:20:09,910 --> 00:20:10,960 of the elements? 538 00:20:14,170 --> 00:20:16,329 I I don't know 539 00:20:16,330 --> 00:20:18,549 what I find in 540 00:20:18,550 --> 00:20:20,229 the experiments that are being done on 541 00:20:20,230 --> 00:20:22,719 Pieszecki really interesting, um, 542 00:20:22,720 --> 00:20:24,249 whether they're actually going to lead 543 00:20:24,250 --> 00:20:25,410 somewhere, I don't know. 544 00:20:26,700 --> 00:20:28,859 Um, yeah, I can't comment much 545 00:20:28,860 --> 00:20:29,860 more on that, unfortunately. 546 00:20:30,850 --> 00:20:31,829 Thank you. 547 00:20:31,830 --> 00:20:33,189 Thank you for the talk as well, 548 00:20:34,510 --> 00:20:35,979 signal angel, are there any more 549 00:20:35,980 --> 00:20:37,659 questions? There are no more questions 550 00:20:37,660 --> 00:20:39,519 from the Internet and I think you also 551 00:20:39,520 --> 00:20:40,569 run out of questions. 552 00:20:40,570 --> 00:20:42,669 So COSPAR, thank you again for 553 00:20:42,670 --> 00:20:44,349 the talk. And please give him a warm 554 00:20:44,350 --> 00:20:45,279 round of applause. 555 00:20:45,280 --> 00:20:46,280 Thank you very much.