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/708 Thanks! 1 00:00:13,710 --> 00:00:16,649 All right, without any further ado, 2 00:00:16,650 --> 00:00:18,809 I would like to introduce Charlotte Papa, 3 00:00:18,810 --> 00:00:21,299 who is the main developer behind 4 00:00:21,300 --> 00:00:23,459 a spinal idol, a HeartWare description, 5 00:00:23,460 --> 00:00:25,239 language which you can use to program 6 00:00:25,240 --> 00:00:27,029 FTP, DJs and the like. 7 00:00:27,030 --> 00:00:29,609 He is working on spinal HDL full time 8 00:00:29,610 --> 00:00:30,659 and I'm looking forward to the 9 00:00:30,660 --> 00:00:32,489 presentation. Please give a warm round of 10 00:00:32,490 --> 00:00:33,490 applause for Shah. 11 00:00:40,800 --> 00:00:42,899 Thank you, so 12 00:00:42,900 --> 00:00:44,099 drunkest, OK. 13 00:00:44,100 --> 00:00:46,199 I will start to tell you a 14 00:00:46,200 --> 00:00:48,139 little bit about why we here and very 15 00:00:48,140 --> 00:00:49,140 logout not so good, 16 00:00:50,220 --> 00:00:52,499 then I will introduce 17 00:00:52,500 --> 00:00:53,609 you next year. 18 00:00:53,610 --> 00:00:56,069 And all the rest of the presentation 19 00:00:56,070 --> 00:00:57,989 will be about showing you example and 20 00:00:57,990 --> 00:00:58,990 thinking about. 21 00:01:00,040 --> 00:01:02,229 Why this is bizarre, by the way, 22 00:01:02,230 --> 00:01:04,458 that example are done. 23 00:01:04,459 --> 00:01:06,709 So, yeah, I have said 24 00:01:06,710 --> 00:01:08,959 before this presentation will only 25 00:01:08,960 --> 00:01:11,419 be about visible hardware. 26 00:01:11,420 --> 00:01:13,909 I will not talk about any 27 00:01:13,910 --> 00:01:16,009 simulation features outside of 28 00:01:16,010 --> 00:01:17,010 things. 29 00:01:17,870 --> 00:01:20,119 So, yeah, they are going 30 00:01:20,120 --> 00:01:22,249 very lurg, initially designed 31 00:01:22,250 --> 00:01:24,589 for simulation and documentation 32 00:01:24,590 --> 00:01:26,659 purposes, and it's only later that they 33 00:01:26,660 --> 00:01:28,909 were added as an input 34 00:01:28,910 --> 00:01:31,879 language for this tool. 35 00:01:31,880 --> 00:01:34,099 And that was a very long time ago, which 36 00:01:34,100 --> 00:01:36,230 mean yeah, 37 00:01:37,310 --> 00:01:39,449 Verdell and very missed many pictures 38 00:01:39,450 --> 00:01:41,179 that could be interesting. 39 00:01:41,180 --> 00:01:43,309 And to see to to infer 40 00:01:43,310 --> 00:01:45,469 hardware you have to use 41 00:01:45,470 --> 00:01:47,599 simulation constructs like processing 42 00:01:47,600 --> 00:01:49,819 and Facebook, which doesn't really make 43 00:01:49,820 --> 00:01:51,949 any sense from that point 44 00:01:51,950 --> 00:01:54,139 of view. And so you don't have things 45 00:01:54,140 --> 00:01:56,119 like obliterated programing and function 46 00:01:56,120 --> 00:01:57,229 and programing. 47 00:01:57,230 --> 00:01:59,989 It could send Trink to talk about 48 00:01:59,990 --> 00:02:02,179 objects not that far since 49 00:02:02,180 --> 00:02:04,279 it is able hardware, but in fact, it make 50 00:02:04,280 --> 00:02:05,539 a lot of sense. 51 00:02:05,540 --> 00:02:07,969 And I'll show you some examples of where 52 00:02:07,970 --> 00:02:11,329 it it it is really powerful. 53 00:02:11,330 --> 00:02:13,699 Then inveigling very simple 54 00:02:13,700 --> 00:02:16,469 concepts are often very verbose, like 55 00:02:16,470 --> 00:02:18,629 instating subcomponent or 56 00:02:18,630 --> 00:02:21,829 as module is very painful. 57 00:02:21,830 --> 00:02:24,019 And so you don't have some notion of 58 00:02:24,020 --> 00:02:26,209 interface. You are always enumerating 59 00:02:26,210 --> 00:02:28,489 signals one by one and many 60 00:02:28,490 --> 00:02:30,679 of the things that make them not so good 61 00:02:30,680 --> 00:02:32,839 and you don't have possibilities 62 00:02:32,840 --> 00:02:34,909 to rise absorption level. 63 00:02:34,910 --> 00:02:36,709 If you use Yaghdan very large, you will 64 00:02:36,710 --> 00:02:38,839 be still stuck in kind 65 00:02:38,840 --> 00:02:40,759 of real abstraction layer. 66 00:02:40,760 --> 00:02:42,499 You will still have to connect everything 67 00:02:42,500 --> 00:02:43,549 by hand. 68 00:02:43,550 --> 00:02:45,829 You will still have to define gaits 69 00:02:45,830 --> 00:02:46,969 one by one. 70 00:02:46,970 --> 00:02:49,069 I mean, it 71 00:02:49,070 --> 00:02:51,889 could be better then 72 00:02:51,890 --> 00:02:53,959 there is back to the 2008 73 00:02:53,960 --> 00:02:54,960 system. 74 00:02:55,340 --> 00:02:57,499 But yeah, 75 00:02:57,500 --> 00:02:59,779 there are not really they have to say us. 76 00:02:59,780 --> 00:03:01,939 I mean they still keep the same from 77 00:03:01,940 --> 00:03:03,679 parodic between Furter you still have to 78 00:03:03,680 --> 00:03:04,729 use in different constructs. 79 00:03:04,730 --> 00:03:06,379 You are still using the eventa driven 80 00:03:06,380 --> 00:03:08,509 paradigm to tell 81 00:03:08,510 --> 00:03:11,059 then they still didn't offer any 82 00:03:11,060 --> 00:03:13,549 hardware description capabilities 83 00:03:13,550 --> 00:03:14,550 and. 84 00:03:15,670 --> 00:03:17,739 The idea to support could be very bad. 85 00:03:17,740 --> 00:03:20,289 I mean, there is many interesting 86 00:03:20,290 --> 00:03:22,419 features in both language, but depending 87 00:03:22,420 --> 00:03:23,749 that you're told that you have to use 88 00:03:23,750 --> 00:03:25,939 false impression of this, you will 89 00:03:25,940 --> 00:03:28,020 not be able to use them, which mean, 90 00:03:29,090 --> 00:03:31,149 yeah, you are still stuck in a 91 00:03:31,150 --> 00:03:32,530 subset of them. 92 00:03:33,550 --> 00:03:36,429 And as well as, for instance, um, 93 00:03:36,430 --> 00:03:37,749 system, Varella grew up a very 94 00:03:37,750 --> 00:03:39,849 interesting features, which is interface 95 00:03:39,850 --> 00:03:40,899 definitions. 96 00:03:40,900 --> 00:03:43,150 But we see in detail that Evan. 97 00:03:45,060 --> 00:03:48,169 This fetus is not that. 98 00:03:48,170 --> 00:03:49,369 That good system. 99 00:03:49,370 --> 00:03:51,499 OK, so, yeah, what to 100 00:03:51,500 --> 00:03:53,629 do next? Um, my 101 00:03:53,630 --> 00:03:55,759 solution are and it has 102 00:03:55,760 --> 00:03:57,409 a solution of other people. 103 00:03:57,410 --> 00:04:00,169 One solution is to use violence 104 00:04:00,170 --> 00:04:02,869 as necklaced language, which is 105 00:04:02,870 --> 00:04:05,329 automatically generated from 106 00:04:05,330 --> 00:04:06,919 higher level language. 107 00:04:08,090 --> 00:04:09,559 And there I go. It's been alleged. 108 00:04:09,560 --> 00:04:12,049 Yeah. So basically, um, 109 00:04:12,050 --> 00:04:14,329 it is an ambitious project that I started 110 00:04:14,330 --> 00:04:17,148 in December 2014. 111 00:04:17,149 --> 00:04:19,369 It focus exclusively on Atayal 112 00:04:19,370 --> 00:04:21,648 description. So the idea behind that is 113 00:04:21,649 --> 00:04:23,749 to do not to not do any compromise, 114 00:04:23,750 --> 00:04:26,059 to really have the best language possible 115 00:04:26,060 --> 00:04:28,459 to do one very precise 116 00:04:28,460 --> 00:04:31,189 thing, which is describing Etel. 117 00:04:31,190 --> 00:04:33,259 Then since the beginning, it was going 118 00:04:33,260 --> 00:04:35,329 to be interoperable with existing tools 119 00:04:35,330 --> 00:04:37,279 because you can go to the Chinese company 120 00:04:37,280 --> 00:04:38,809 and ask them to support your brand new 121 00:04:38,810 --> 00:04:40,579 language. They will never they will never 122 00:04:40,580 --> 00:04:41,479 do that. 123 00:04:41,480 --> 00:04:43,579 So the compiler 124 00:04:43,580 --> 00:04:44,660 is able to generate 125 00:04:46,130 --> 00:04:48,499 its output. Netlist, as very long 126 00:04:48,500 --> 00:04:50,689 as you can also 127 00:04:50,690 --> 00:04:52,819 integrate legacy APIs inside the spine 128 00:04:52,820 --> 00:04:55,009 in Nigeria by using a black box system. 129 00:04:55,010 --> 00:04:57,799 It's a little bit like having a C 130 00:04:57,800 --> 00:05:00,769 header file, then 131 00:05:00,770 --> 00:05:02,509 application level start at the same level 132 00:05:02,510 --> 00:05:04,849 as an the actual very 133 00:05:04,850 --> 00:05:06,649 log or nearly the same level. 134 00:05:06,650 --> 00:05:08,839 But the thing is, and the top 135 00:05:08,840 --> 00:05:11,359 of the deal, you can build 136 00:05:11,360 --> 00:05:13,639 new abstraction level, you can build new 137 00:05:13,640 --> 00:05:16,249 tools and it is its 138 00:05:16,250 --> 00:05:17,250 biggest 139 00:05:18,320 --> 00:05:19,320 powerful side. 140 00:05:20,510 --> 00:05:22,849 Then there is a flow. 141 00:05:22,850 --> 00:05:25,189 So basically you would have to define 142 00:05:25,190 --> 00:05:27,499 your description 143 00:05:27,500 --> 00:05:28,649 by using that scarified. 144 00:05:28,650 --> 00:05:30,969 Since then, you would ask 145 00:05:30,970 --> 00:05:32,689 Network Tool to generate the 146 00:05:32,690 --> 00:05:34,879 corresponding reaccelerating Netlist. 147 00:05:34,880 --> 00:05:37,189 Then you can grab 148 00:05:37,190 --> 00:05:39,619 you of that person, 149 00:05:39,620 --> 00:05:41,269 but then all together and you can use 150 00:05:41,270 --> 00:05:43,639 your flow as before by using same 151 00:05:43,640 --> 00:05:45,499 simulation tools and before and same 152 00:05:45,500 --> 00:05:47,000 synthesis tool. But then before. 153 00:05:48,120 --> 00:05:50,279 So, yeah, no, I will start with some 154 00:05:50,280 --> 00:05:52,409 examples or just some things, 155 00:05:52,410 --> 00:05:55,259 um, let's point to Tokyo. 156 00:05:55,260 --> 00:05:57,229 So spinless Dale. 157 00:05:58,250 --> 00:06:00,529 Will not create any overhead 158 00:06:00,530 --> 00:06:01,639 in the. 159 00:06:01,640 --> 00:06:03,319 You will not lose Gates, you will not 160 00:06:03,320 --> 00:06:04,610 lose performance because 161 00:06:06,620 --> 00:06:08,749 it is not the kind of issue, you know, 162 00:06:08,750 --> 00:06:10,939 if there is a divide where you've tried 163 00:06:10,940 --> 00:06:13,159 some not arbitrary, 164 00:06:13,160 --> 00:06:15,229 but you can provide some see a 165 00:06:15,230 --> 00:06:16,519 great move that will be translated 166 00:06:16,520 --> 00:06:18,949 automatically into space. 167 00:06:18,950 --> 00:06:20,229 So that is not that spin. 168 00:06:20,230 --> 00:06:22,399 That is really an approach where you 169 00:06:22,400 --> 00:06:24,769 have to define register 170 00:06:24,770 --> 00:06:26,839 a little bit as before and gates a little 171 00:06:26,840 --> 00:06:27,840 bit as before. 172 00:06:29,030 --> 00:06:31,159 Then all 173 00:06:31,160 --> 00:06:33,349 components key and 174 00:06:33,350 --> 00:06:35,619 all the names that 175 00:06:35,620 --> 00:06:37,699 are integrated area, 176 00:06:37,700 --> 00:06:39,769 which mean you can do your mission 177 00:06:39,770 --> 00:06:41,869 simulation as before with the wave you 178 00:06:41,870 --> 00:06:44,359 can look signals and match them 179 00:06:44,360 --> 00:06:45,769 with your description. 180 00:06:45,770 --> 00:06:47,509 It's not an issue at all. 181 00:06:47,510 --> 00:06:49,639 And OK, in fact, 182 00:06:49,640 --> 00:06:50,779 it's not really a language. 183 00:06:50,780 --> 00:06:52,909 It's what we call an internal 184 00:06:52,910 --> 00:06:54,169 data. 185 00:06:54,170 --> 00:06:57,149 So there is basically 186 00:06:57,150 --> 00:06:59,329 scatter, which is 187 00:06:59,330 --> 00:07:01,459 it is a scalar liberi. 188 00:07:01,460 --> 00:07:03,749 So there is a canard angry and 189 00:07:03,750 --> 00:07:05,599 Banerjee's and Liberi implemented on the 190 00:07:05,600 --> 00:07:06,600 top of it 191 00:07:07,760 --> 00:07:09,949 and it could and trying to have some 192 00:07:09,950 --> 00:07:11,929 language into another one. 193 00:07:11,930 --> 00:07:14,029 But in fact, this is probably one 194 00:07:14,030 --> 00:07:15,110 of the best part of 195 00:07:17,220 --> 00:07:19,369 the example. 196 00:07:19,370 --> 00:07:21,649 Um, yes, there is a simple example 197 00:07:21,650 --> 00:07:22,910 where you have some 198 00:07:24,120 --> 00:07:26,209 as common conditions 199 00:07:26,210 --> 00:07:28,429 to merge, to drive imex, 200 00:07:28,430 --> 00:07:30,019 to drive a counter, to drive another 201 00:07:30,020 --> 00:07:32,399 country with a reset 202 00:07:32,400 --> 00:07:34,939 value in which 203 00:07:34,940 --> 00:07:36,979 you would have to. 204 00:07:36,980 --> 00:07:38,239 If you want to do that, you would have to 205 00:07:38,240 --> 00:07:40,519 write three different process 206 00:07:40,520 --> 00:07:42,129 because you are in an event driven 207 00:07:42,130 --> 00:07:43,459 predications. 208 00:07:43,460 --> 00:07:45,709 Yeah, this is how you have to do things. 209 00:07:45,710 --> 00:07:46,699 It is really boring. 210 00:07:46,700 --> 00:07:47,689 It is already verbals. 211 00:07:47,690 --> 00:07:50,089 And as you can see here, you duplicate 212 00:07:50,090 --> 00:07:51,799 three times the same condition, which is 213 00:07:51,800 --> 00:07:54,169 not very good in terms of good 214 00:07:54,170 --> 00:07:55,170 quality. 215 00:07:55,760 --> 00:07:58,009 And there is a equivalence in 216 00:07:58,010 --> 00:08:01,069 Spain in the 217 00:08:01,070 --> 00:08:02,749 first to define signals. 218 00:08:04,040 --> 00:08:06,229 It's already different than if 219 00:08:06,230 --> 00:08:07,499 you want to define this. Cabinda 220 00:08:07,500 --> 00:08:09,649 ultimately say I want Adbul, which 221 00:08:09,650 --> 00:08:12,289 is a hardware boolean that I type. 222 00:08:12,290 --> 00:08:14,539 Then if you want this registar, 223 00:08:14,540 --> 00:08:16,909 you say, I want all of 224 00:08:16,910 --> 00:08:18,739 this. Given that I type which that we 225 00:08:18,740 --> 00:08:20,989 sign up from, it's so it's 226 00:08:20,990 --> 00:08:23,259 not like in Vectron and very low where 227 00:08:24,430 --> 00:08:26,629 our register, I think that we can become 228 00:08:26,630 --> 00:08:28,259 our register. Because you assign it in 229 00:08:28,260 --> 00:08:30,619 that process, though it's not that 230 00:08:30,620 --> 00:08:33,199 here. It's really explicit definition. 231 00:08:33,200 --> 00:08:35,329 And this simple fact changed 232 00:08:35,330 --> 00:08:36,349 a lot of things. 233 00:08:36,350 --> 00:08:38,869 Like, for example, you can assign 234 00:08:38,870 --> 00:08:41,329 all those guys inside, 235 00:08:41,330 --> 00:08:44,058 inside the same if condition. 236 00:08:44,059 --> 00:08:46,189 So it is a random example. 237 00:08:46,190 --> 00:08:48,319 But basically 238 00:08:48,320 --> 00:08:49,969 it happened very often, like in a state 239 00:08:49,970 --> 00:08:52,219 machine where you have a pass and 240 00:08:52,220 --> 00:08:53,839 as a commercial path, you have to 241 00:08:53,840 --> 00:08:55,279 duplicate switch statement. 242 00:08:55,280 --> 00:08:57,349 And this is terrible in terms of 243 00:08:57,350 --> 00:08:58,669 quality. 244 00:08:58,670 --> 00:09:00,859 Then go for it for twenty 245 00:09:00,860 --> 00:09:03,139 eight line of Jagdale before to land line 246 00:09:03,140 --> 00:09:05,449 of final deal with Abitur 247 00:09:05,450 --> 00:09:06,950 explicitly expressivity 248 00:09:08,090 --> 00:09:09,199 so on. 249 00:09:09,200 --> 00:09:11,449 Yeah it's it's good 250 00:09:11,450 --> 00:09:14,089 then. OK, let's take another example. 251 00:09:14,090 --> 00:09:17,179 Let's imagine you want, you have FGB 252 00:09:17,180 --> 00:09:18,919 input and you want to calculate the grade 253 00:09:18,920 --> 00:09:21,289 level of those inputs by 254 00:09:21,290 --> 00:09:23,989 multiplying each of them with a constant 255 00:09:23,990 --> 00:09:24,990 coefficient. 256 00:09:25,730 --> 00:09:26,939 So yeah. 257 00:09:26,940 --> 00:09:28,279 Yeah I can see if I had three times the 258 00:09:28,280 --> 00:09:28,849 same pattern. 259 00:09:28,850 --> 00:09:31,150 Basically you have three time um 260 00:09:32,810 --> 00:09:35,000 and signals 261 00:09:36,320 --> 00:09:38,389 unsane signals and a floating 262 00:09:38,390 --> 00:09:40,519 point constant and then as 263 00:09:40,520 --> 00:09:42,889 output gets out the 264 00:09:42,890 --> 00:09:43,829 output of our register. 265 00:09:43,830 --> 00:09:46,249 So you have three times this pattern 266 00:09:46,250 --> 00:09:48,659 if you want to be smart in 267 00:09:48,660 --> 00:09:50,809 L and avoiding rewriting each 268 00:09:50,810 --> 00:09:52,879 time the same three times the same stuff, 269 00:09:52,880 --> 00:09:55,219 you can define a component 270 00:09:55,220 --> 00:09:57,529 which contains that. But you know, 271 00:09:57,530 --> 00:09:59,599 using and in fact that is really boring. 272 00:09:59,600 --> 00:10:00,769 It is very verbose. 273 00:10:00,770 --> 00:10:02,029 So it's not so good. 274 00:10:02,030 --> 00:10:04,289 But here you can use function. 275 00:10:04,290 --> 00:10:06,619 So let's take the um 276 00:10:06,620 --> 00:10:07,519 implementation. 277 00:10:07,520 --> 00:10:10,129 The final here we can define 278 00:10:10,130 --> 00:10:11,130 FGB value, 279 00:10:12,260 --> 00:10:14,499 then you can define a function which 280 00:10:14,500 --> 00:10:15,500 take as argument. 281 00:10:16,790 --> 00:10:19,539 How do I find value with 282 00:10:19,540 --> 00:10:21,829 Alabamian time constant 283 00:10:21,830 --> 00:10:22,999 and dysfunction. 284 00:10:23,000 --> 00:10:25,639 We return to the output of 285 00:10:25,640 --> 00:10:27,979 to split up so you can see if I can. 286 00:10:27,980 --> 00:10:30,169 Defining intermediate register 287 00:10:30,170 --> 00:10:32,539 has Irag of Ebbetts then 288 00:10:32,540 --> 00:10:34,699 doing some fixed point calculation 289 00:10:34,700 --> 00:10:37,039 and returning it and then we using 290 00:10:37,040 --> 00:10:38,629 this function time. 291 00:10:38,630 --> 00:10:39,630 So yeah. 292 00:10:40,790 --> 00:10:42,889 Well and voila you have, you 293 00:10:42,890 --> 00:10:44,539 have functions, you have procedural, you 294 00:10:44,540 --> 00:10:46,639 have a task but you can't, you 295 00:10:46,640 --> 00:10:48,979 can't instantiate intro's 296 00:10:48,980 --> 00:10:50,329 function, arbitrary outwait. 297 00:10:50,330 --> 00:10:52,609 You still, you are still kind of stuck 298 00:10:52,610 --> 00:10:54,709 with a syntax that will limit 299 00:10:54,710 --> 00:10:56,959 you to give relationship between inputs 300 00:10:56,960 --> 00:10:57,960 and outputs by. 301 00:10:59,690 --> 00:11:01,729 Really, it's all the way, which is not 302 00:11:01,730 --> 00:11:02,730 very powerful, 303 00:11:04,130 --> 00:11:06,779 then, um, yeah, 304 00:11:06,780 --> 00:11:08,389 let's take another example. 305 00:11:08,390 --> 00:11:10,609 It is let's imagine you have a handshake. 306 00:11:10,610 --> 00:11:12,709 This, though, very simple with just 307 00:11:12,710 --> 00:11:15,019 are valid as 308 00:11:15,020 --> 00:11:17,449 m. misprision and are ready from 309 00:11:17,450 --> 00:11:18,979 safe to say stop. 310 00:11:18,980 --> 00:11:21,319 I'm not ready. Oh yeah. 311 00:11:21,320 --> 00:11:23,509 You can go. I ready and 312 00:11:23,510 --> 00:11:25,699 upload the you can see 313 00:11:25,700 --> 00:11:28,099 here and imagine 314 00:11:28,100 --> 00:11:30,109 you have two instance of those bits of 315 00:11:30,110 --> 00:11:32,719 tidbits like soothsayer's and sync 316 00:11:32,720 --> 00:11:35,599 and you want to insert a Q between those 317 00:11:35,600 --> 00:11:37,729 pieces if you want to do that, 318 00:11:37,730 --> 00:11:39,319 in which there you, you would have to 319 00:11:39,320 --> 00:11:41,599 write all this boring stuff. 320 00:11:41,600 --> 00:11:43,789 So like redefining or signals 321 00:11:43,790 --> 00:11:45,919 one by one of your and 322 00:11:45,920 --> 00:11:48,319 this time 323 00:11:48,320 --> 00:11:50,539 then you will have AZO to insult to 324 00:11:50,540 --> 00:11:51,919 FIFA, which is. 325 00:11:51,920 --> 00:11:52,909 Yeah it is boring. 326 00:11:52,910 --> 00:11:55,149 I mean you have to map into 327 00:11:55,150 --> 00:11:57,419 a vector 328 00:11:57,420 --> 00:11:59,029 or go goes one by one. 329 00:11:59,030 --> 00:12:00,919 So here we just have three elements. 330 00:12:00,920 --> 00:12:03,829 But I rocket in a company where 331 00:12:03,830 --> 00:12:05,899 in average we have like 20 signals. 332 00:12:05,900 --> 00:12:08,539 It's time to, to map 333 00:12:08,540 --> 00:12:09,939 into that are stricter. 334 00:12:09,940 --> 00:12:13,249 So yeah, it's not very great. 335 00:12:13,250 --> 00:12:15,379 Then here there is a first approach 336 00:12:15,380 --> 00:12:16,700 of how you can do that in Spain. 337 00:12:17,840 --> 00:12:20,689 So in Spain, like the 338 00:12:20,690 --> 00:12:23,869 handshake, this is name stream. 339 00:12:23,870 --> 00:12:25,939 So Astrium is a handshake boost that can 340 00:12:25,940 --> 00:12:28,189 carry an arbitrary data type. 341 00:12:28,190 --> 00:12:30,409 And here it is, an ad lib color 342 00:12:30,410 --> 00:12:32,569 with this phrase 343 00:12:32,570 --> 00:12:34,309 parameterization. 344 00:12:34,310 --> 00:12:36,709 So here you can define so 345 00:12:36,710 --> 00:12:38,719 sorry can define stuff. 346 00:12:38,720 --> 00:12:41,719 And I think we can stream of Adibi color 347 00:12:41,720 --> 00:12:44,209 of this parameterization. 348 00:12:44,210 --> 00:12:47,389 Then you can define a pfeifle like 349 00:12:47,390 --> 00:12:48,709 five, four, three, five, four, which 350 00:12:48,710 --> 00:12:50,809 would create this kind of data type with 351 00:12:50,810 --> 00:12:52,379 this depth. 352 00:12:52,380 --> 00:12:54,559 And here you don't have to bend. 353 00:12:54,560 --> 00:12:56,539 It signals one by one. 354 00:12:56,540 --> 00:12:58,159 You don't need to be in six. 355 00:12:58,160 --> 00:13:01,459 Basically you can directly access 356 00:13:01,460 --> 00:13:03,619 either of this pfeifle 357 00:13:03,620 --> 00:13:05,989 by saying five that I that 358 00:13:05,990 --> 00:13:08,599 push, for example, to access this bar 359 00:13:08,600 --> 00:13:10,549 of Bob to access this bar. 360 00:13:10,550 --> 00:13:12,889 And here, for example, it's saying, 361 00:13:12,890 --> 00:13:14,989 I want to take my soul stream 362 00:13:14,990 --> 00:13:17,539 and I want to connect it by using a fully 363 00:13:20,360 --> 00:13:23,029 conscious way, though direct connections 364 00:13:23,030 --> 00:13:25,369 in respect of that direction 365 00:13:25,370 --> 00:13:27,619 to the for your part, 366 00:13:27,620 --> 00:13:29,719 and then say I take the 367 00:13:29,720 --> 00:13:31,669 fight for your birth and I want to 368 00:13:31,670 --> 00:13:32,969 connect it to my think. 369 00:13:32,970 --> 00:13:35,329 The fall from twenty 370 00:13:35,330 --> 00:13:37,129 a line of work to seven line of 371 00:13:38,180 --> 00:13:40,159 it is good, but it could be better later. 372 00:13:40,160 --> 00:13:42,709 We see a better way then. 373 00:13:42,710 --> 00:13:44,809 OK, so here I 374 00:13:44,810 --> 00:13:46,509 think that we have an adlib that has 375 00:13:46,510 --> 00:13:48,919 stricter it come from the spine library 376 00:13:49,970 --> 00:13:52,249 and there is how it is defined 377 00:13:52,250 --> 00:13:54,110 like it is a case class which you 378 00:13:55,120 --> 00:13:57,199 name FGB with 379 00:13:57,200 --> 00:13:58,669 this parameterization for the 380 00:13:58,670 --> 00:14:01,129 construction of it diskless extend 381 00:14:01,130 --> 00:14:03,559 bundle bender represents the 382 00:14:03,560 --> 00:14:06,529 notion of that are structure in hardware. 383 00:14:06,530 --> 00:14:08,719 Then here you can 384 00:14:08,720 --> 00:14:10,019 define elements that you have in this 385 00:14:10,020 --> 00:14:11,449 data structure, although it is simple 386 00:14:11,450 --> 00:14:12,709 syntax. 387 00:14:12,710 --> 00:14:14,839 And for example, here is the definition 388 00:14:14,840 --> 00:14:17,479 of the stream concept. 389 00:14:17,480 --> 00:14:19,639 In original, though, this is still 390 00:14:19,640 --> 00:14:21,969 a case class we take as 391 00:14:21,970 --> 00:14:22,970 an parameter. 392 00:14:25,650 --> 00:14:28,289 The type then 393 00:14:28,290 --> 00:14:29,399 it takes an independent state 394 00:14:29,400 --> 00:14:30,839 representative district stricter with the 395 00:14:30,840 --> 00:14:32,999 concept of master slave, because 396 00:14:33,000 --> 00:14:35,219 you can take a history and say it is a 397 00:14:35,220 --> 00:14:37,379 master of my opponent and isolate 398 00:14:37,380 --> 00:14:39,439 part of my component, then can 399 00:14:39,440 --> 00:14:41,359 define find value it already has. 400 00:14:41,360 --> 00:14:43,949 That signals 401 00:14:43,950 --> 00:14:45,689 then the payload as an instance of 402 00:14:45,690 --> 00:14:47,789 disparities, principle, that type. 403 00:14:47,790 --> 00:14:50,009 Then you can implement the master 404 00:14:50,010 --> 00:14:51,629 function to say how it is that a 405 00:14:51,630 --> 00:14:53,669 structure could be set as a master or as 406 00:14:53,670 --> 00:14:55,769 a slave of a component. 407 00:14:55,770 --> 00:14:57,899 By saying that outputs 408 00:14:57,900 --> 00:14:59,459 are valid and the payload has input, you 409 00:14:59,460 --> 00:15:01,919 have the ready and 410 00:15:01,920 --> 00:15:03,839 then you can already do this kind of 411 00:15:03,840 --> 00:15:06,059 syntax and here comes the fun 412 00:15:06,060 --> 00:15:07,079 stuff. 413 00:15:07,080 --> 00:15:09,299 So basically, I told you 414 00:15:09,300 --> 00:15:11,669 before that binary is basically 415 00:15:11,670 --> 00:15:14,609 a library, which I mean here 416 00:15:14,610 --> 00:15:16,559 this is this is object oriented, which 417 00:15:16,560 --> 00:15:18,749 means you can add function in this in 418 00:15:18,750 --> 00:15:21,639 this class, like adding the 419 00:15:21,640 --> 00:15:23,699 combinatorial operator 420 00:15:23,700 --> 00:15:25,859 connection and the 421 00:15:25,860 --> 00:15:28,409 reverse one, which means the reverse of 422 00:15:28,410 --> 00:15:30,529 this one. And you can as of, 423 00:15:30,530 --> 00:15:33,209 for example, add in this 424 00:15:33,210 --> 00:15:35,279 business definition a 425 00:15:35,280 --> 00:15:37,409 function that will, when 426 00:15:37,410 --> 00:15:39,479 you call it on Natrium, it will need to 427 00:15:39,480 --> 00:15:41,569 set a FIFO, connect 428 00:15:41,570 --> 00:15:44,009 this stream on the one you are calling 429 00:15:44,010 --> 00:15:46,259 it, connect it to the back 430 00:15:46,260 --> 00:15:48,839 part of this story of this Phifer 431 00:15:48,840 --> 00:15:50,939 and then returning the both 432 00:15:50,940 --> 00:15:52,529 of these FIFO. 433 00:15:52,530 --> 00:15:54,509 And there you go. 434 00:15:54,510 --> 00:15:56,699 You can you pass you 435 00:15:56,700 --> 00:15:59,379 you are moving from, um, 436 00:15:59,380 --> 00:16:00,839 discard as before, which you do 437 00:16:00,840 --> 00:16:03,029 everything by hand in financial to 438 00:16:03,030 --> 00:16:05,339 this card, which is only two lines like 439 00:16:05,340 --> 00:16:07,349 where you say, I have thought and I think 440 00:16:07,350 --> 00:16:09,199 we can stream of every color with this 441 00:16:09,200 --> 00:16:10,379 parameterization. 442 00:16:10,380 --> 00:16:12,449 Then I take myself 443 00:16:12,450 --> 00:16:14,639 I want to cue it with a faithful 444 00:16:14,640 --> 00:16:16,559 A16 element, and then I want to connect 445 00:16:16,560 --> 00:16:18,689 the output part of this 446 00:16:18,690 --> 00:16:20,129 effort to my thinking. 447 00:16:20,130 --> 00:16:22,469 And yeah, here we start 448 00:16:22,470 --> 00:16:25,079 to rise to the level of abstraction via 449 00:16:25,080 --> 00:16:27,419 going out of this mess of 450 00:16:27,420 --> 00:16:29,849 wayout, which is how that description 451 00:16:29,850 --> 00:16:30,850 things. 452 00:16:31,470 --> 00:16:33,779 So this is a 453 00:16:33,780 --> 00:16:36,209 simple example and 454 00:16:36,210 --> 00:16:38,279 there is many other funny things that you 455 00:16:38,280 --> 00:16:39,239 can do with tramp's. 456 00:16:39,240 --> 00:16:41,459 Like, for example, imagine 457 00:16:41,460 --> 00:16:43,559 you want to do this arbitrary 458 00:16:43,560 --> 00:16:46,019 hardware like you have a stream of color, 459 00:16:46,020 --> 00:16:48,149 then you want to drop transaction of 460 00:16:48,150 --> 00:16:50,759 this stream of color when they are black 461 00:16:50,760 --> 00:16:53,129 by adding this arbitration. 462 00:16:53,130 --> 00:16:54,959 And then you want to either by planning 463 00:16:54,960 --> 00:16:58,289 stages for performance reasons for 464 00:16:58,290 --> 00:16:59,290 us. I don't know 465 00:17:00,390 --> 00:17:02,249 if you want to do that. 466 00:17:02,250 --> 00:17:04,259 Um, yeah. 467 00:17:04,260 --> 00:17:06,328 If you want to do that, I don't 468 00:17:06,329 --> 00:17:07,618 know. It is, it is really boring. 469 00:17:07,619 --> 00:17:09,749 And if 470 00:17:09,750 --> 00:17:11,519 you want to do that, it's, it's only two 471 00:17:11,520 --> 00:17:14,549 lines. Like you say, I have a stream 472 00:17:14,550 --> 00:17:17,309 of color named source. 473 00:17:17,310 --> 00:17:19,379 Then you say I take 474 00:17:19,380 --> 00:17:21,509 this off and I want 475 00:17:21,510 --> 00:17:23,848 to throw it transaction when 476 00:17:23,849 --> 00:17:25,889 the source payload is black. 477 00:17:25,890 --> 00:17:28,379 And then I want to add pipetting stages 478 00:17:28,380 --> 00:17:30,599 and the end of it, and then I will name 479 00:17:30,600 --> 00:17:32,599 the original staging function. 480 00:17:32,600 --> 00:17:33,600 I think 481 00:17:34,680 --> 00:17:37,379 though, all this stuff here is infrared 482 00:17:37,380 --> 00:17:39,449 by design. 483 00:17:39,450 --> 00:17:41,309 So because if I want to be 484 00:17:42,540 --> 00:17:44,789 at a strictly about or definer is black 485 00:17:44,790 --> 00:17:46,889 function and these kind of things. 486 00:17:46,890 --> 00:17:49,319 So it could look like magic, 487 00:17:49,320 --> 00:17:51,689 but in fact it is pure aertel, because if 488 00:17:51,690 --> 00:17:53,909 you look like, um, how is 489 00:17:53,910 --> 00:17:56,489 implemented the trun function, 490 00:17:56,490 --> 00:17:58,469 you will fall on something which is pure 491 00:17:58,470 --> 00:18:00,629 attia. I mean 492 00:18:00,630 --> 00:18:02,759 it's not about adding magic 493 00:18:02,760 --> 00:18:04,589 things that to make abstraction for you, 494 00:18:04,590 --> 00:18:06,899 you can always look 495 00:18:06,900 --> 00:18:09,029 inside how it is done by using regular 496 00:18:09,030 --> 00:18:11,369 aertel like the turbine function 497 00:18:11,370 --> 00:18:13,859 where you can say can see 498 00:18:13,860 --> 00:18:16,229 it's instantiate, are it on stream 499 00:18:16,230 --> 00:18:17,759 of the same data type. 500 00:18:17,760 --> 00:18:19,979 Then by default he would connect 501 00:18:19,980 --> 00:18:22,289 this stream to the written stream, 502 00:18:22,290 --> 00:18:24,419 but it will in fact 503 00:18:24,420 --> 00:18:25,349 get there. 504 00:18:25,350 --> 00:18:27,869 They're undervalued and that's already by 505 00:18:27,870 --> 00:18:30,359 adding some additional conditions, like 506 00:18:30,360 --> 00:18:32,909 if I want to throw transaction's 507 00:18:32,910 --> 00:18:35,069 then but the force and 508 00:18:35,070 --> 00:18:37,319 then there is a true 509 00:18:37,320 --> 00:18:40,259 I mean, yeah, this is still 510 00:18:40,260 --> 00:18:42,209 Aertel so. 511 00:18:42,210 --> 00:18:44,579 Yeah, no, I would change the topic. 512 00:18:44,580 --> 00:18:47,069 Um, safety first. 513 00:18:47,070 --> 00:18:49,229 I mean when you do aertel, it's very 514 00:18:49,230 --> 00:18:51,239 easy to do bad things like infrared 515 00:18:51,240 --> 00:18:53,429 combinatorial loops across multiple 516 00:18:53,430 --> 00:18:55,499 module, inferring, for 517 00:18:55,500 --> 00:18:57,629 example, something that is by forgetting, 518 00:18:57,630 --> 00:18:59,459 assigning a comment or think that in all 519 00:18:59,460 --> 00:19:01,619 case and we check 520 00:19:01,620 --> 00:19:04,199 all those things for you. 521 00:19:04,200 --> 00:19:06,749 So, for example, 522 00:19:06,750 --> 00:19:08,519 this loop would be detected by the 523 00:19:08,520 --> 00:19:10,619 compiler or here's a result is 524 00:19:10,620 --> 00:19:12,449 not assigned by default. 525 00:19:12,450 --> 00:19:14,759 If this force, which we will 526 00:19:14,760 --> 00:19:16,889 infer, though, which I mean, 527 00:19:18,660 --> 00:19:21,419 if you successfully generate 528 00:19:21,420 --> 00:19:23,729 if you generate whose output 529 00:19:23,730 --> 00:19:25,959 ethyl. You have much more trust 530 00:19:25,960 --> 00:19:28,719 in this United States than in our 531 00:19:28,720 --> 00:19:30,609 handwritten one, because many, many 532 00:19:30,610 --> 00:19:32,679 things are already checked for you. 533 00:19:32,680 --> 00:19:35,109 There is some checks about 534 00:19:36,250 --> 00:19:37,899 cognomen crossing, which is them 535 00:19:39,820 --> 00:19:42,369 then basic obstruction, though 536 00:19:42,370 --> 00:19:44,079 it is a simple example of 537 00:19:45,190 --> 00:19:47,079 how you can opt out. 538 00:19:47,080 --> 00:19:49,419 What could be an abstract like 539 00:19:49,420 --> 00:19:51,729 imagine you need to do a communication 540 00:19:51,730 --> 00:19:53,559 module and you need a timeout inside it 541 00:19:53,560 --> 00:19:56,169 to check some things 542 00:19:56,170 --> 00:19:57,489 you can say. 543 00:19:57,490 --> 00:19:59,649 I want to create a timeout named Timeout, 544 00:19:59,650 --> 00:20:01,569 which is a timeout which will take after 545 00:20:01,570 --> 00:20:02,949 one thousand cycle. 546 00:20:02,950 --> 00:20:05,389 And then you can say if my timeout 547 00:20:05,390 --> 00:20:07,449 stick then I want to clear 548 00:20:07,450 --> 00:20:08,919 it though. 549 00:20:08,920 --> 00:20:10,239 But it is hardware. 550 00:20:10,240 --> 00:20:12,309 But as you can see here, you are using 551 00:20:12,310 --> 00:20:15,129 a function to to access our hardware 552 00:20:15,130 --> 00:20:17,619 in place of the timeout that counter 553 00:20:17,620 --> 00:20:18,669 equals zero. 554 00:20:18,670 --> 00:20:21,969 I use a function they would clear to. 555 00:20:21,970 --> 00:20:24,269 In fact, um, 556 00:20:24,270 --> 00:20:26,209 another example is if you want to 557 00:20:26,210 --> 00:20:27,879 control, which would count from zero to 558 00:20:27,880 --> 00:20:30,249 nine, can say I want to container of 559 00:20:30,250 --> 00:20:31,989 ten states, then you can say, I want to 560 00:20:31,990 --> 00:20:33,729 clear it, I want to increment it, I want 561 00:20:33,730 --> 00:20:35,709 to get its value, I want to get its next 562 00:20:35,710 --> 00:20:37,659 value. I want to know if it will overflow 563 00:20:37,660 --> 00:20:39,759 this cycle. I want to check if it's 564 00:20:39,760 --> 00:20:41,109 equal to five. 565 00:20:41,110 --> 00:20:43,629 I mean, just kind of things you can 566 00:20:43,630 --> 00:20:45,759 you can kind of have them with that 567 00:20:45,760 --> 00:20:47,859 and very large, but by using components 568 00:20:47,860 --> 00:20:50,109 and you know how components are 569 00:20:50,110 --> 00:20:51,519 going to use. 570 00:20:51,520 --> 00:20:53,949 And if you just say 571 00:20:53,950 --> 00:20:56,059 you want it and then you can use 572 00:20:56,060 --> 00:20:57,160 it as what you want, 573 00:20:59,170 --> 00:21:01,419 then oh yeah, 574 00:21:01,420 --> 00:21:03,909 total obstruction. I will add the top of 575 00:21:03,910 --> 00:21:05,529 that. It's not something it created in 576 00:21:05,530 --> 00:21:07,059 its compiler, which I mean, you can 577 00:21:07,060 --> 00:21:09,339 create those abstraction can define 578 00:21:09,340 --> 00:21:11,409 what what is a timeout or these kind of 579 00:21:11,410 --> 00:21:12,410 things. 580 00:21:13,120 --> 00:21:16,269 So functional programing, um 581 00:21:16,270 --> 00:21:17,270 basically 582 00:21:18,360 --> 00:21:20,259 function programing is something with 583 00:21:20,260 --> 00:21:22,599 which is big and at least 584 00:21:22,600 --> 00:21:23,989 one part of it. 585 00:21:23,990 --> 00:21:25,509 An example of just one part of it. 586 00:21:25,510 --> 00:21:27,609 Like if you want to infer this 587 00:21:27,610 --> 00:21:30,229 hardware where you have an address 588 00:21:30,230 --> 00:21:32,349 and array of addresses, then 589 00:21:32,350 --> 00:21:35,019 you want to check which addresses 590 00:21:35,020 --> 00:21:37,179 I was given K and then you 591 00:21:37,180 --> 00:21:39,249 want to know if 592 00:21:39,250 --> 00:21:40,250 one of them is true 593 00:21:41,320 --> 00:21:42,249 or you want to do that. 594 00:21:42,250 --> 00:21:44,559 You can say, I want to define address, 595 00:21:44,560 --> 00:21:46,689 which is a vector of these are the type 596 00:21:46,690 --> 00:21:47,589 four time. 597 00:21:47,590 --> 00:21:49,699 Then I can define the K and then 598 00:21:49,700 --> 00:21:52,389 can say I take my array of addresses 599 00:21:52,390 --> 00:21:54,459 and I want to create a new away 600 00:21:54,460 --> 00:21:56,289 from it. So you use the concept of 601 00:21:56,290 --> 00:21:58,509 mapping by and 602 00:21:58,510 --> 00:22:00,729 you give as a function that you want 603 00:22:00,730 --> 00:22:03,429 to use to translate 604 00:22:03,430 --> 00:22:06,249 those elements one by one to the 605 00:22:06,250 --> 00:22:08,079 next. All right. 606 00:22:08,080 --> 00:22:10,599 Or you can also use the radius 607 00:22:10,600 --> 00:22:12,179 concept of functional programing, like 608 00:22:12,180 --> 00:22:14,499 let's say I think that it's all right. 609 00:22:14,500 --> 00:22:16,329 And I want to reduce it to a single 610 00:22:16,330 --> 00:22:18,459 element by using this reduction function, 611 00:22:18,460 --> 00:22:20,559 which will be used on 612 00:22:20,560 --> 00:22:22,689 each element, each pair of 613 00:22:22,690 --> 00:22:25,029 elements to try to to reduce them until 614 00:22:25,030 --> 00:22:26,639 a single one. 615 00:22:26,640 --> 00:22:28,809 So it's kind of things that you can use 616 00:22:28,810 --> 00:22:30,269 very easily with Benilde. 617 00:22:31,390 --> 00:22:33,669 And yet this is a funny things, 618 00:22:33,670 --> 00:22:36,669 like basically, 619 00:22:36,670 --> 00:22:38,799 um, each time you use Binary Excel, 620 00:22:39,850 --> 00:22:41,559 in fact you are doing some Scarra 621 00:22:41,560 --> 00:22:44,589 programing by using spinach delivery 622 00:22:44,590 --> 00:22:46,719 and basically you use 623 00:22:46,720 --> 00:22:48,459 it. It would bring it into your computer 624 00:22:48,460 --> 00:22:50,649 memory, a graph of your design, 625 00:22:50,650 --> 00:22:52,929 which means you can also ask how 626 00:22:52,930 --> 00:22:55,029 this graph is currently 627 00:22:55,030 --> 00:22:56,949 to get some information of it. 628 00:22:56,950 --> 00:22:59,649 Imagine you have, um, A and B, 629 00:22:59,650 --> 00:23:01,839 both value sequence together which appear 630 00:23:01,840 --> 00:23:03,009 together. 631 00:23:03,010 --> 00:23:05,089 Then you have A which 632 00:23:05,090 --> 00:23:06,090 go through the 633 00:23:07,270 --> 00:23:08,869 calculation pipeline that you don't 634 00:23:08,870 --> 00:23:09,880 already know that I don't see. 635 00:23:11,800 --> 00:23:14,019 And then when there is bit of a come 636 00:23:14,020 --> 00:23:16,449 out, you need to add 637 00:23:16,450 --> 00:23:18,459 as a B value that were present at the 638 00:23:18,460 --> 00:23:20,519 same moment than the ever present 639 00:23:20,520 --> 00:23:22,719 that so you have to delay B by the 640 00:23:22,720 --> 00:23:25,119 same delays and this pipeline. 641 00:23:25,120 --> 00:23:27,339 And basically in order 642 00:23:27,340 --> 00:23:29,439 to do that, to to know how 643 00:23:29,440 --> 00:23:31,809 many of you have to use to to specify 644 00:23:31,810 --> 00:23:33,849 participatory style, you will have to 645 00:23:33,850 --> 00:23:34,929 count by hand. 646 00:23:34,930 --> 00:23:37,539 Megale, you have to run a simulations 647 00:23:37,540 --> 00:23:39,009 to look at the wave and just kind of 648 00:23:39,010 --> 00:23:40,899 things. But it's not very nice because if 649 00:23:40,900 --> 00:23:43,009 the if the pipelining latency change 650 00:23:43,010 --> 00:23:45,279 there, you are kind of annoying 651 00:23:45,280 --> 00:23:46,419 because you have to change things and 652 00:23:46,420 --> 00:23:48,309 maybe we forget to back. 653 00:23:48,310 --> 00:23:50,679 Yeah, but in Spain, Rexdale, 654 00:23:50,680 --> 00:23:52,959 you can ask, um, 655 00:23:52,960 --> 00:23:54,789 the Netlist to give you the latency 656 00:23:54,790 --> 00:23:57,909 between this point and this point, 657 00:23:57,910 --> 00:24:00,099 but using this function and 658 00:24:00,100 --> 00:24:01,659 there you go, the latency of this 659 00:24:01,660 --> 00:24:02,829 pipeline. 660 00:24:02,830 --> 00:24:05,649 And you can if you delay, um, 661 00:24:05,650 --> 00:24:08,259 by with a right delay, 662 00:24:08,260 --> 00:24:09,519 which makes your design much more 663 00:24:09,520 --> 00:24:11,469 elastic, which allow you to modify things 664 00:24:11,470 --> 00:24:13,749 there without having to care about 665 00:24:13,750 --> 00:24:14,750 this stuff. 666 00:24:15,730 --> 00:24:18,099 So I am as an example, 667 00:24:18,100 --> 00:24:20,809 this is more about what I mean is 668 00:24:20,810 --> 00:24:23,349 of a description like 669 00:24:23,350 --> 00:24:25,479 stopping doing aertel 670 00:24:25,480 --> 00:24:27,729 with each time signals and 671 00:24:27,730 --> 00:24:28,689 scanning of things. 672 00:24:28,690 --> 00:24:30,819 So imagine you want to define 673 00:24:30,820 --> 00:24:33,459 this state machine with a state 674 00:24:33,460 --> 00:24:34,449 that is a beast. 675 00:24:34,450 --> 00:24:36,759 I see with some conditions, 676 00:24:36,760 --> 00:24:39,079 like when you enter into Interstate B, 677 00:24:39,080 --> 00:24:41,589 you sets acounter to zero. 678 00:24:41,590 --> 00:24:42,519 Exactly. 679 00:24:42,520 --> 00:24:44,679 In B, you incremented, then an exit of 680 00:24:44,680 --> 00:24:46,859 it. You want to arrested to try 681 00:24:48,000 --> 00:24:49,929 to do that to do autistic machine. 682 00:24:49,930 --> 00:24:52,029 You can do that and splenetic there 683 00:24:52,030 --> 00:24:53,409 so you can use a state machine tool, 684 00:24:53,410 --> 00:24:56,169 which is again one thing which is 685 00:24:56,170 --> 00:24:58,529 on the top of it. It's not implemented 686 00:24:58,530 --> 00:25:00,789 into the compiler. 687 00:25:00,790 --> 00:25:02,409 So you can say, I want a new state 688 00:25:02,410 --> 00:25:04,599 machine, I want a different state A, B, 689 00:25:04,600 --> 00:25:06,969 C, which are state and 690 00:25:06,970 --> 00:25:09,159 A is the entry point, then can you find 691 00:25:09,160 --> 00:25:11,559 some signals and some stuff like that 692 00:25:11,560 --> 00:25:13,809 and then you can say Onstad 693 00:25:13,810 --> 00:25:16,149 and state to be an entry. 694 00:25:16,150 --> 00:25:18,429 I want to set my content to zero 695 00:25:18,430 --> 00:25:20,019 when state B is active. 696 00:25:20,020 --> 00:25:22,479 I want to increment my counter cycle 697 00:25:22,480 --> 00:25:24,539 and I want to check my quantize go 698 00:25:24,540 --> 00:25:27,069 too far. Then I want to go to state C 699 00:25:27,070 --> 00:25:29,229 and on exit I've said B, I want 700 00:25:29,230 --> 00:25:31,299 to, but I always lived through. 701 00:25:31,300 --> 00:25:32,300 I mean. 702 00:25:33,630 --> 00:25:35,789 This is really something 703 00:25:37,350 --> 00:25:38,429 to show you that 704 00:25:39,620 --> 00:25:41,249 there is not a fixed syntax, you can 705 00:25:41,250 --> 00:25:43,169 extend it, you can create new obstruction 706 00:25:43,170 --> 00:25:45,359 of the top of it, depending your 707 00:25:45,360 --> 00:25:46,970 challenges, could be really useful. 708 00:25:48,210 --> 00:25:50,819 Then let's take another example. 709 00:25:50,820 --> 00:25:52,769 Imagine you have designed a timer, a 710 00:25:52,770 --> 00:25:55,049 simple timer with a simple input, 711 00:25:55,050 --> 00:25:57,599 a simple, clear input, 712 00:25:57,600 --> 00:26:00,269 a limit to say when you timer 713 00:26:00,270 --> 00:26:02,549 will become full on output 714 00:26:02,550 --> 00:26:04,619 value. We can tell you when times 715 00:26:04,620 --> 00:26:06,689 are full and add value to get 716 00:26:06,690 --> 00:26:08,579 the current value of the timer. 717 00:26:08,580 --> 00:26:10,319 So there is a corresponding 718 00:26:10,320 --> 00:26:12,539 implementation of 719 00:26:12,540 --> 00:26:13,649 this component. 720 00:26:13,650 --> 00:26:16,019 Like you define a timer with some 721 00:26:16,020 --> 00:26:17,579 time mitigation, like how many bits you 722 00:26:17,580 --> 00:26:18,839 want for it. 723 00:26:18,840 --> 00:26:20,979 This class extant component to say 724 00:26:20,980 --> 00:26:23,249 yep, it is component, then 725 00:26:23,250 --> 00:26:25,439 you can define either of this component 726 00:26:25,440 --> 00:26:27,839 in new that structure 727 00:26:27,840 --> 00:26:29,699 by saying you have six, which is our 728 00:26:29,700 --> 00:26:31,709 input clear, which is our input bill. 729 00:26:31,710 --> 00:26:33,989 And yeah, simple things then 730 00:26:33,990 --> 00:26:36,169 can define cantell, you can define 731 00:26:36,170 --> 00:26:38,969 the value of your components 732 00:26:38,970 --> 00:26:40,829 and then OK, you have it, you are happy 733 00:26:40,830 --> 00:26:43,319 and you want to map it into 734 00:26:43,320 --> 00:26:44,879 something already existing. 735 00:26:44,880 --> 00:26:47,309 You want to, you want to 736 00:26:47,310 --> 00:26:49,619 from every memory is like the 737 00:26:49,620 --> 00:26:52,349 one you want to be able to set 738 00:26:52,350 --> 00:26:53,639 a limit of the timer. 739 00:26:53,640 --> 00:26:55,829 You want to be able to 740 00:26:55,830 --> 00:26:57,059 define which 741 00:26:58,110 --> 00:26:59,669 signals we'd be able to make you 742 00:26:59,670 --> 00:27:00,899 automatic. 743 00:27:00,900 --> 00:27:01,900 It's going to things 744 00:27:03,660 --> 00:27:05,729 to do that it's been in 745 00:27:05,730 --> 00:27:07,469 there and you will probably use some 746 00:27:07,470 --> 00:27:08,969 switch statements and these kind of 747 00:27:08,970 --> 00:27:10,469 things. But here there is another 748 00:27:10,470 --> 00:27:12,629 solution which is really 749 00:27:12,630 --> 00:27:14,879 using obliterated programing. 750 00:27:14,880 --> 00:27:17,159 So basically there is a tool 751 00:27:17,160 --> 00:27:18,630 named Bisley Factory, 752 00:27:19,860 --> 00:27:22,019 and this tool is abstract, which 753 00:27:22,020 --> 00:27:24,149 means it is an abstract class and 754 00:27:24,150 --> 00:27:26,399 it's defined how it 755 00:27:26,400 --> 00:27:29,519 defined function that will allow you to 756 00:27:29,520 --> 00:27:32,249 define the mapping between 757 00:27:32,250 --> 00:27:34,349 a memory and some rest of 758 00:27:34,350 --> 00:27:36,629 your design and 759 00:27:36,630 --> 00:27:38,369 user is multiple implementation of these 760 00:27:38,370 --> 00:27:40,609 tools like an arbitrary one, another 761 00:27:40,610 --> 00:27:42,300 one and an excellent one. 762 00:27:43,830 --> 00:27:45,409 And there you go. 763 00:27:45,410 --> 00:27:47,609 OK, so as 764 00:27:47,610 --> 00:27:50,009 instance, in our time, our component 765 00:27:50,010 --> 00:27:52,289 in the bendir that are strictly 766 00:27:52,290 --> 00:27:55,139 defined are you can add a new function 767 00:27:55,140 --> 00:27:57,899 that could be used to say, 768 00:27:57,900 --> 00:27:59,969 I want to drive this 769 00:27:59,970 --> 00:28:02,369 time a component from memory 770 00:28:02,370 --> 00:28:03,599 abuse. 771 00:28:03,600 --> 00:28:05,999 So factory at a given 772 00:28:06,000 --> 00:28:07,469 base addressing the mapping of this 773 00:28:07,470 --> 00:28:10,109 space. And you can also specify 774 00:28:10,110 --> 00:28:12,239 a list of signals which could be 775 00:28:12,240 --> 00:28:14,309 able to make you automatic can as 776 00:28:14,310 --> 00:28:17,159 give a list of clear signals to 777 00:28:17,160 --> 00:28:19,409 say that they can 778 00:28:19,410 --> 00:28:20,609 create. 779 00:28:20,610 --> 00:28:23,039 And then you can say, 780 00:28:23,040 --> 00:28:25,169 I want my controller to be 781 00:28:25,170 --> 00:28:27,629 able to drive and read the 782 00:28:27,630 --> 00:28:29,829 limit of my time at the base at 783 00:28:29,830 --> 00:28:30,539 zero. 784 00:28:30,540 --> 00:28:32,939 So basically, yeah, here 785 00:28:32,940 --> 00:28:35,849 you are saying that the upper limit 786 00:28:35,850 --> 00:28:37,919 is our register of 787 00:28:37,920 --> 00:28:40,109 TACE Bisley factory 788 00:28:40,110 --> 00:28:42,899 that you can access as a zero and 789 00:28:42,900 --> 00:28:45,419 you this will be able to 790 00:28:45,420 --> 00:28:47,669 read it, but it will also 791 00:28:47,670 --> 00:28:49,859 take the control of it to be able to 792 00:28:49,860 --> 00:28:52,649 drive it then 793 00:28:52,650 --> 00:28:54,899 can say you want you you want to be able 794 00:28:54,900 --> 00:28:55,900 to. 795 00:28:56,270 --> 00:28:58,549 Set the clear flag 796 00:28:58,550 --> 00:29:00,769 of the timer when the controller is 797 00:29:00,770 --> 00:29:02,629 rattling the base of the zero. 798 00:29:02,630 --> 00:29:04,789 So, I 799 00:29:04,790 --> 00:29:06,979 mean, this kind of abstract definition of 800 00:29:06,980 --> 00:29:09,619 regular mapping allows you to 801 00:29:09,620 --> 00:29:11,869 not care about this 802 00:29:11,870 --> 00:29:12,139 time. 803 00:29:12,140 --> 00:29:13,829 Things like you don't need to know that 804 00:29:13,830 --> 00:29:16,519 Abib timings the AvalonBay stymying 805 00:29:16,520 --> 00:29:18,199 ACSI, Furbies timing. 806 00:29:18,200 --> 00:29:20,329 You know, not you don't have to know 807 00:29:20,330 --> 00:29:21,530 how the bills work. 808 00:29:23,370 --> 00:29:25,709 To create a custom peripheral, which 809 00:29:25,710 --> 00:29:27,779 is very interesting, because it means 810 00:29:27,780 --> 00:29:29,789 this function is abstract, you can use it 811 00:29:29,790 --> 00:29:31,969 with an Avalon base 812 00:29:31,970 --> 00:29:34,409 and purpose without having to create 813 00:29:34,410 --> 00:29:36,839 kind of bridge by yourself to map 814 00:29:36,840 --> 00:29:38,309 into a fixed definition. 815 00:29:40,580 --> 00:29:41,749 So there you go. 816 00:29:41,750 --> 00:29:44,029 There is an example how you can 817 00:29:44,030 --> 00:29:46,579 use all that stuff you want to create 818 00:29:46,580 --> 00:29:49,039 a big time component with a preschooler, 819 00:29:49,040 --> 00:29:51,109 with one timer and 820 00:29:51,110 --> 00:29:52,459 these kind of things. 821 00:29:52,460 --> 00:29:54,349 So you can define, for example, an APB 822 00:29:54,350 --> 00:29:56,869 Trabis with this metaphysician. 823 00:29:56,870 --> 00:29:59,839 Then can you find some signals? 824 00:29:59,840 --> 00:30:01,639 Then you can say, I want a preschooler of 825 00:30:01,640 --> 00:30:03,829 16 because I want a timer after a 826 00:30:03,830 --> 00:30:05,929 it. I want a time A, B and C of 16. 827 00:30:05,930 --> 00:30:08,029 But then you say 828 00:30:08,030 --> 00:30:10,679 you want to create this IPB previously 829 00:30:10,680 --> 00:30:13,339 factory, which will be able to map 830 00:30:13,340 --> 00:30:15,499 the IPB trip is defined there to 831 00:30:15,500 --> 00:30:17,959 some other. 832 00:30:17,960 --> 00:30:20,119 And then you can say if I can pull I want 833 00:30:20,120 --> 00:30:22,279 I take my tamasi, I want 834 00:30:22,280 --> 00:30:23,770 to be able to drive either 835 00:30:24,890 --> 00:30:27,289 of this Tamasi with my Piscatella at 836 00:30:27,290 --> 00:30:29,249 this address in the mapping. 837 00:30:29,250 --> 00:30:30,979 And there is a list of things that I 838 00:30:30,980 --> 00:30:33,199 could be able to make it tick, and 839 00:30:33,200 --> 00:30:34,729 there is a list of things that I could be 840 00:30:34,730 --> 00:30:36,949 able to make it clear. 841 00:30:36,950 --> 00:30:37,950 So. 842 00:30:39,390 --> 00:30:41,369 Yeah, it is 843 00:30:42,600 --> 00:30:44,819 it is very short, I mean, it is 844 00:30:44,820 --> 00:30:46,979 really I mean, it is 845 00:30:46,980 --> 00:30:48,509 very expressive. 846 00:30:48,510 --> 00:30:50,159 You say, I want I want that. 847 00:30:50,160 --> 00:30:51,089 I want that. I want that. 848 00:30:51,090 --> 00:30:53,459 I want to connect them back this way. 849 00:30:53,460 --> 00:30:54,839 And this is done for you. 850 00:30:54,840 --> 00:30:57,089 You don't have to play with wire 851 00:30:57,090 --> 00:30:59,189 by hand and by hand and 852 00:30:59,190 --> 00:31:01,229 all these things. It is very flexible. 853 00:31:01,230 --> 00:31:03,629 And if you want to edit it, you you can't 854 00:31:03,630 --> 00:31:05,429 introduce Arberg inside it. 855 00:31:05,430 --> 00:31:07,319 I mean, you don't have to play with 856 00:31:07,320 --> 00:31:07,799 timings. 857 00:31:07,800 --> 00:31:09,509 You don't have to play with all the 858 00:31:09,510 --> 00:31:10,510 things, 859 00:31:11,760 --> 00:31:13,949 then. Yeah, it is a 860 00:31:13,950 --> 00:31:16,079 project which was made with by 861 00:31:16,080 --> 00:31:18,209 next year, which is kind of 862 00:31:18,210 --> 00:31:20,309 a little microcontroller with a risk, 863 00:31:20,310 --> 00:31:22,979 five c.p.u with instructions, 864 00:31:22,980 --> 00:31:24,480 with instruction, cash with 865 00:31:25,740 --> 00:31:28,379 an extension and just kind of things 866 00:31:28,380 --> 00:31:30,779 with duct tape, 867 00:31:30,780 --> 00:31:33,479 um, to get by using 868 00:31:33,480 --> 00:31:35,519 see we are using Breakpoint 869 00:31:37,170 --> 00:31:38,429 and things like that. 870 00:31:38,430 --> 00:31:40,509 There is a is there a memory. 871 00:31:40,510 --> 00:31:41,849 There is, there is 872 00:31:43,020 --> 00:31:45,419 an XY, uh, for 873 00:31:45,420 --> 00:31:46,919 crossbar to connect all those guys 874 00:31:46,920 --> 00:31:48,179 together with a good buddy. 875 00:31:48,180 --> 00:31:50,729 There is an APB, three Brees 876 00:31:50,730 --> 00:31:52,349 Bridge to go to peripherals. 877 00:31:52,350 --> 00:31:54,119 Which are your time. 878 00:31:54,120 --> 00:31:57,239 Are you out of control? 879 00:31:57,240 --> 00:32:00,179 And basically there is something 880 00:32:00,180 --> 00:32:02,249 interesting is the implementation of this 881 00:32:02,250 --> 00:32:04,889 design. As instance, the 882 00:32:04,890 --> 00:32:07,919 IPB decoder, though, 883 00:32:07,920 --> 00:32:10,379 to try to install 884 00:32:10,380 --> 00:32:12,569 T.S.A.. So it is used for control of five 885 00:32:12,570 --> 00:32:13,679 lines, though. 886 00:32:13,680 --> 00:32:15,089 But I've already talked about these kind 887 00:32:15,090 --> 00:32:17,369 of things before, but for 888 00:32:17,370 --> 00:32:19,799 example, to instantiate 889 00:32:19,800 --> 00:32:22,769 and create all those connections between 890 00:32:22,770 --> 00:32:24,239 between them and I. 891 00:32:24,240 --> 00:32:26,369 What defines a mapping of Auto's 892 00:32:26,370 --> 00:32:27,899 in this arbitration? 893 00:32:27,900 --> 00:32:30,179 This is use that like you say, 894 00:32:30,180 --> 00:32:32,789 I want an APB Trittico the semester 895 00:32:32,790 --> 00:32:35,109 is AVP Bregier you IPB, so 896 00:32:35,110 --> 00:32:37,229 DKA and there you can give 897 00:32:37,230 --> 00:32:39,299 a list of slave like 898 00:32:39,300 --> 00:32:41,159 that you are there are you people you 899 00:32:41,160 --> 00:32:43,439 will be mapped at this address with 900 00:32:43,440 --> 00:32:44,579 this memory renge. 901 00:32:46,730 --> 00:32:49,369 Then another example is 902 00:32:49,370 --> 00:32:52,249 how, um, yeah, 903 00:32:52,250 --> 00:32:54,679 this thing is made so that 904 00:32:54,680 --> 00:32:56,389 actually for crossbar, which connect or 905 00:32:56,390 --> 00:32:57,390 does go together. 906 00:32:59,000 --> 00:33:01,609 So here it, you then 907 00:33:01,610 --> 00:33:03,839 build a pattern from object onto 908 00:33:03,840 --> 00:33:06,109 the world. So basically you can say, 909 00:33:06,110 --> 00:33:08,959 I want to create an axis for a factory 910 00:33:08,960 --> 00:33:11,459 and then you will you kind of fit 911 00:33:11,460 --> 00:33:13,729 that model in this tool to 912 00:33:13,730 --> 00:33:15,349 say what you want. 913 00:33:15,350 --> 00:33:17,479 And when you have this 914 00:33:17,480 --> 00:33:19,609 tool is what you want to say. 915 00:33:19,610 --> 00:33:21,289 It's all right, you can build yourself 916 00:33:21,290 --> 00:33:22,910 and the tool. We do what you want. 917 00:33:24,530 --> 00:33:26,839 Then I think simple 918 00:33:26,840 --> 00:33:29,089 it is to have the FIDs 919 00:33:29,090 --> 00:33:31,279 list of slaves, like saying, 920 00:33:31,280 --> 00:33:33,439 I have the ram ram, I have an 921 00:33:33,440 --> 00:33:36,169 rage rachmat at those location. 922 00:33:36,170 --> 00:33:38,239 Then you can say there is, 923 00:33:38,240 --> 00:33:39,240 for example, 924 00:33:40,310 --> 00:33:42,259 controller which should be able to access 925 00:33:42,260 --> 00:33:44,599 it as the RAM controller, your Yuxi and 926 00:33:44,600 --> 00:33:45,600 just get off things 927 00:33:46,910 --> 00:33:49,369 and yeah it's nearly 928 00:33:49,370 --> 00:33:51,799 has is it than to use 929 00:33:51,800 --> 00:33:54,349 those things are KISS's things but 930 00:33:54,350 --> 00:33:55,350 it's still. 931 00:33:56,790 --> 00:33:58,859 PUCA without using 932 00:33:58,860 --> 00:34:00,000 graphical GUI, 933 00:34:01,980 --> 00:34:04,039 then, yeah, about Scarra, 934 00:34:04,040 --> 00:34:06,239 uh, basically, 935 00:34:06,240 --> 00:34:09,629 yeah, sculler is probably 936 00:34:09,630 --> 00:34:12,928 a very good general-purpose languages 937 00:34:12,929 --> 00:34:15,329 then if you want to 938 00:34:15,330 --> 00:34:17,669 test it, there is already some 939 00:34:17,670 --> 00:34:20,129 idea we can use 940 00:34:20,130 --> 00:34:22,349 which can help you like to 941 00:34:22,350 --> 00:34:24,509 have to have syntax 942 00:34:24,510 --> 00:34:27,329 error, highlighting, refactoring, 943 00:34:27,330 --> 00:34:29,309 these kind of things, navigation tools 944 00:34:29,310 --> 00:34:31,379 which are very useful with 945 00:34:31,380 --> 00:34:32,939 EMAC plugin. 946 00:34:32,940 --> 00:34:35,609 And yeah, 947 00:34:35,610 --> 00:34:36,610 so 948 00:34:37,860 --> 00:34:40,319 it is, as I say, completely opensource. 949 00:34:40,320 --> 00:34:42,988 You can find some documentation 950 00:34:42,989 --> 00:34:43,989 there. 951 00:34:44,760 --> 00:34:46,408 There is some ready to use project with 952 00:34:46,409 --> 00:34:48,509 some directive how you can install tools 953 00:34:48,510 --> 00:34:49,859 and you can think so. 954 00:34:49,860 --> 00:34:52,339 Yeah. If you want to try it. 955 00:34:52,340 --> 00:34:54,888 That already goes there. 956 00:34:54,889 --> 00:34:56,819 There is also some communication channel 957 00:34:56,820 --> 00:34:59,489 if you have questions like 958 00:34:59,490 --> 00:35:01,679 architecture, but uh, do 959 00:35:01,680 --> 00:35:03,659 not hesitate to make the issue. 960 00:35:03,660 --> 00:35:05,999 If the compiler has some 961 00:35:06,000 --> 00:35:08,639 strange things, it could happen, but 962 00:35:08,640 --> 00:35:10,320 it is pretty up now. 963 00:35:11,460 --> 00:35:13,649 And if you want to talk me in cremator 964 00:35:13,650 --> 00:35:15,099 is my email address at 965 00:35:16,350 --> 00:35:17,350 the. 966 00:35:18,410 --> 00:35:19,410 Thank you. 967 00:35:29,220 --> 00:35:30,149 Thank you very much. 968 00:35:30,150 --> 00:35:32,039 We have some time left for questions and 969 00:35:32,040 --> 00:35:34,289 answers if you want to leave the room 970 00:35:34,290 --> 00:35:35,309 now. That's OK. 971 00:35:35,310 --> 00:35:37,229 But please be quiet and take some trash 972 00:35:37,230 --> 00:35:38,489 with you if possible. 973 00:35:38,490 --> 00:35:40,259 In order to ask a question, please line 974 00:35:40,260 --> 00:35:42,029 up at any of the microphones and I will 975 00:35:42,030 --> 00:35:43,019 call you out. 976 00:35:43,020 --> 00:35:44,119 Yes, please. 977 00:35:44,120 --> 00:35:45,879 Uh, hello. Thanks for your talk. 978 00:35:45,880 --> 00:35:46,949 I was wondering. 979 00:35:46,950 --> 00:35:48,659 So now we have this very high level 980 00:35:48,660 --> 00:35:51,119 description of of our hardware. 981 00:35:51,120 --> 00:35:53,309 So what is the debulking story 982 00:35:53,310 --> 00:35:55,389 like? So if something goes wrong, 983 00:35:55,390 --> 00:35:57,389 do we have to look at the video code or 984 00:35:57,390 --> 00:35:58,739 is there some kind of high level 985 00:35:58,740 --> 00:36:00,479 debugging mode that I can use? 986 00:36:00,480 --> 00:36:02,609 OK, the first for 987 00:36:02,610 --> 00:36:06,029 instance, I could take example, 988 00:36:06,030 --> 00:36:08,279 the for example 989 00:36:08,280 --> 00:36:11,039 here, if you have a problem 990 00:36:11,040 --> 00:36:13,529 in this drive from function, like 991 00:36:13,530 --> 00:36:15,179 the mapping is not working correctly. 992 00:36:16,650 --> 00:36:18,929 So integrated vector, you will still 993 00:36:18,930 --> 00:36:21,059 keep Ya'acov components and 994 00:36:21,060 --> 00:36:22,769 names that you use, like, for example, 995 00:36:22,770 --> 00:36:25,259 this timer here, we take 996 00:36:25,260 --> 00:36:27,389 those names, things like that 997 00:36:27,390 --> 00:36:29,969 are here. The logic used 998 00:36:29,970 --> 00:36:31,079 a little different there. 999 00:36:31,080 --> 00:36:32,279 If you define a signal for complete 1000 00:36:32,280 --> 00:36:33,280 dysfunction 1001 00:36:34,440 --> 00:36:36,599 that there is a name will be 1002 00:36:36,600 --> 00:36:38,739 kept because this function written on 1003 00:36:38,740 --> 00:36:41,039 an area which so. 1004 00:36:44,380 --> 00:36:46,509 It's not very difficult, 1005 00:36:46,510 --> 00:36:48,459 though, because, yeah, it's to keep them 1006 00:36:48,460 --> 00:36:50,529 and there is something it is 1007 00:36:50,530 --> 00:36:52,749 the fact that, you know, 1008 00:36:52,750 --> 00:36:54,729 if you use this kind of obstruction, 1009 00:36:54,730 --> 00:36:57,249 they're like traumatization 1010 00:36:57,250 --> 00:36:59,349 when something happened and please 1011 00:36:59,350 --> 00:37:01,779 at a pipeline to those because 1012 00:37:01,780 --> 00:37:03,849 those functions were already verified by 1013 00:37:03,850 --> 00:37:04,959 somebody else. 1014 00:37:04,960 --> 00:37:06,369 And you don't have to rewrite it each 1015 00:37:06,370 --> 00:37:07,449 time by hand. 1016 00:37:07,450 --> 00:37:09,729 You can kind of type what 1017 00:37:09,730 --> 00:37:12,429 you think. And it carried you from 1018 00:37:12,430 --> 00:37:14,259 directly because because you are using a 1019 00:37:14,260 --> 00:37:15,819 more abstract way to define the hardware. 1020 00:37:15,820 --> 00:37:18,129 You have much less bucks coming 1021 00:37:18,130 --> 00:37:20,529 in your description. 1022 00:37:20,530 --> 00:37:22,629 And really sometimes 1023 00:37:22,630 --> 00:37:24,549 it's really unbelievable. 1024 00:37:24,550 --> 00:37:25,999 Like, you know, when you are doing work, 1025 00:37:26,000 --> 00:37:28,959 then it never work the first time. 1026 00:37:28,960 --> 00:37:31,089 But by using the ZAPORA 1027 00:37:31,090 --> 00:37:33,520 really sometime it happen 1028 00:37:35,440 --> 00:37:37,509 already. Sometimes it is surprising, 1029 00:37:37,510 --> 00:37:38,920 but yeah. 1030 00:37:40,510 --> 00:37:42,909 Then you can take a look 1031 00:37:42,910 --> 00:37:44,799 at that if you are really not sure. 1032 00:37:44,800 --> 00:37:46,539 And there is something strange. So the 1033 00:37:46,540 --> 00:37:49,029 United Way is not crap. 1034 00:37:49,030 --> 00:37:51,489 It is readable. If you talk 1035 00:37:51,490 --> 00:37:53,659 about your single name, you will find it. 1036 00:37:53,660 --> 00:37:56,019 It will still keep the same. 1037 00:37:56,020 --> 00:37:58,419 If you use one statement, you will still 1038 00:37:58,420 --> 00:38:00,339 try them integrated with Excel. 1039 00:38:00,340 --> 00:38:03,249 So it is not a mess. 1040 00:38:03,250 --> 00:38:04,689 It is right. But normally you don't have 1041 00:38:04,690 --> 00:38:05,739 to go into the Excel. 1042 00:38:05,740 --> 00:38:07,719 You will still have points where you can 1043 00:38:07,720 --> 00:38:10,419 prob signals and that would be right. 1044 00:38:10,420 --> 00:38:11,559 Thank you. 1045 00:38:11,560 --> 00:38:12,560 Question in the front. 1046 00:38:13,750 --> 00:38:14,349 Hello. 1047 00:38:14,350 --> 00:38:16,309 Um, nice. 1048 00:38:16,310 --> 00:38:18,749 Um, 4:00. 1049 00:38:18,750 --> 00:38:19,829 Uh. 1050 00:38:19,830 --> 00:38:21,009 Um. No. 1051 00:38:21,010 --> 00:38:24,519 Ever heard of, uh, 1052 00:38:24,520 --> 00:38:27,129 a system level design languages 1053 00:38:27,130 --> 00:38:29,259 like System C or 1054 00:38:29,260 --> 00:38:31,479 spec C because so 1055 00:38:31,480 --> 00:38:33,460 do a very 1056 00:38:36,100 --> 00:38:38,379 similar approach to the problem of 1057 00:38:38,380 --> 00:38:40,509 raising the 1058 00:38:40,510 --> 00:38:41,510 level of. 1059 00:38:44,820 --> 00:38:47,009 Was the level of a lot 1060 00:38:47,010 --> 00:38:49,229 of them, so, yeah, I have 1061 00:38:49,230 --> 00:38:51,389 heard about EMC and those 1062 00:38:51,390 --> 00:38:52,929 I went back. 1063 00:38:52,930 --> 00:38:53,819 Yeah, sexy. 1064 00:38:53,820 --> 00:38:55,859 I don't know about sexy, I don't know 1065 00:38:55,860 --> 00:38:58,049 about it. So about EMC. 1066 00:38:58,050 --> 00:38:59,639 So much. 1067 00:38:59,640 --> 00:39:01,409 OK, you can use I know that you can use 1068 00:39:01,410 --> 00:39:03,089 many features or like or features that 1069 00:39:03,090 --> 00:39:05,309 you want when you are using 1070 00:39:05,310 --> 00:39:08,489 EMC for different things. 1071 00:39:08,490 --> 00:39:10,859 But then for think visible 1072 00:39:10,860 --> 00:39:13,139 things I am really 1073 00:39:13,140 --> 00:39:14,879 not sure that you can use or crazy 1074 00:39:14,880 --> 00:39:17,099 features of EMC, but 1075 00:39:17,100 --> 00:39:18,449 I am not an expert and I want to say 1076 00:39:18,450 --> 00:39:20,879 crap. But I think EMC, 1077 00:39:20,880 --> 00:39:23,059 when you want to come back to cities, 1078 00:39:23,060 --> 00:39:25,589 is things you will have to use 1079 00:39:25,590 --> 00:39:27,549 since it is synthetic is much more 1080 00:39:27,550 --> 00:39:29,849 restrictive and maybe not 1081 00:39:29,850 --> 00:39:32,129 so much powerful, but maybe I'm 1082 00:39:32,130 --> 00:39:33,130 seeing some crap. 1083 00:39:35,040 --> 00:39:36,359 Oh no you don't. 1084 00:39:36,360 --> 00:39:38,519 But it's similar to 1085 00:39:38,520 --> 00:39:40,139 some things you only can 1086 00:39:42,030 --> 00:39:44,279 use while simulating the whole 1087 00:39:44,280 --> 00:39:44,939 process. 1088 00:39:44,940 --> 00:39:47,129 You are still using sensitivity and 1089 00:39:47,130 --> 00:39:48,509 these kind of things, right? 1090 00:39:48,510 --> 00:39:50,669 Yeah, but you don't have 1091 00:39:50,670 --> 00:39:52,589 to use sensitivity. 1092 00:39:52,590 --> 00:39:55,559 You can also use fifers for 1093 00:39:55,560 --> 00:39:57,719 the vocal communication or you 1094 00:39:57,720 --> 00:39:59,939 can introduce some 1095 00:39:59,940 --> 00:40:00,940 biases 1096 00:40:03,150 --> 00:40:04,150 very 1097 00:40:05,250 --> 00:40:06,250 um. 1098 00:40:07,230 --> 00:40:08,789 Common to your approach. 1099 00:40:08,790 --> 00:40:11,669 Yeah. Which I really like 1100 00:40:11,670 --> 00:40:14,009 raising the level of abstraction to make 1101 00:40:14,010 --> 00:40:15,179 everything easier. 1102 00:40:15,180 --> 00:40:17,669 So you don't just have to synthesize 1103 00:40:17,670 --> 00:40:19,179 it down. 1104 00:40:19,180 --> 00:40:20,849 OK, thanks a lot. Thanks. 1105 00:40:20,850 --> 00:40:22,349 We're taking the next question from the 1106 00:40:22,350 --> 00:40:23,350 very back. 1107 00:40:23,910 --> 00:40:26,099 Can you compare it to Chisel, which 1108 00:40:26,100 --> 00:40:28,359 is also skull based and also 1109 00:40:28,360 --> 00:40:29,939 a high level synthesis tool? 1110 00:40:29,940 --> 00:40:32,039 Yeah, OK, so basically 1111 00:40:32,040 --> 00:40:34,679 before starting from Delaware using K2, 1112 00:40:34,680 --> 00:40:36,869 but I move away from there because 1113 00:40:36,870 --> 00:40:39,089 of some bad feelings that 1114 00:40:39,090 --> 00:40:41,429 I had, though 1115 00:40:41,430 --> 00:40:43,559 I don't want to be to be 1116 00:40:43,560 --> 00:40:45,149 to to touch either. 1117 00:40:45,150 --> 00:40:47,849 Um, but there is really many features 1118 00:40:47,850 --> 00:40:50,129 that are not working well in it. 1119 00:40:50,130 --> 00:40:52,669 Like for example, you don't have the 1120 00:40:52,670 --> 00:40:54,839 you can't use kind of them and 1121 00:40:54,840 --> 00:40:56,909 support, but not really. 1122 00:40:56,910 --> 00:40:59,009 It didn't work very well when I used it. 1123 00:40:59,010 --> 00:41:01,019 And for example, you are still forced to 1124 00:41:01,020 --> 00:41:03,179 use Synchronoss reset, which are 1125 00:41:03,180 --> 00:41:05,249 active high diskette, I think. 1126 00:41:05,250 --> 00:41:06,250 I mean, 1127 00:41:08,280 --> 00:41:10,349 it's I 1128 00:41:10,350 --> 00:41:12,579 mean the team behind 1129 00:41:12,580 --> 00:41:14,729 Kaser from Maine opinions focus on 1130 00:41:14,730 --> 00:41:17,179 their needs are not seeing Shiza 1131 00:41:17,180 --> 00:41:19,469 like are tools to solve problems 1132 00:41:19,470 --> 00:41:20,579 of everybody. 1133 00:41:20,580 --> 00:41:22,699 Things are things they 1134 00:41:22,700 --> 00:41:23,609 hate what they want. 1135 00:41:23,610 --> 00:41:24,569 They don't go further. 1136 00:41:24,570 --> 00:41:26,879 They don't polish it enough from 1137 00:41:26,880 --> 00:41:29,069 my point of view and really 1138 00:41:29,070 --> 00:41:31,139 know is there 1139 00:41:31,140 --> 00:41:33,689 are really much more happy with it 1140 00:41:33,690 --> 00:41:35,879 because, yeah, I have a page of 1141 00:41:35,880 --> 00:41:37,799 my documentation which is talking about 1142 00:41:37,800 --> 00:41:40,409 the difference between Israel and Israel. 1143 00:41:40,410 --> 00:41:42,509 And there is really a lot of 1144 00:41:42,510 --> 00:41:45,119 little things, little issue with 1145 00:41:45,120 --> 00:41:47,309 but which we completely break Chastel 1146 00:41:47,310 --> 00:41:48,779 if you really want to use it in a 1147 00:41:48,780 --> 00:41:49,949 productive environment. 1148 00:41:51,590 --> 00:41:54,439 And about the synthesis, you mean 1149 00:41:54,440 --> 00:41:55,819 you have a question about is it is this 1150 00:41:55,820 --> 00:41:56,919 right? 1151 00:41:56,920 --> 00:41:59,629 Um, no, I just mentioned that was 1152 00:41:59,630 --> 00:42:00,630 it to. 1153 00:42:01,700 --> 00:42:03,739 But speaking of the differences, wouldn't 1154 00:42:03,740 --> 00:42:06,019 it make more sense to just Chastel 1155 00:42:06,020 --> 00:42:08,569 to address those differences 1156 00:42:08,570 --> 00:42:10,819 instead of working it? 1157 00:42:10,820 --> 00:42:12,209 Oh, I try to, yeah. 1158 00:42:12,210 --> 00:42:14,689 OK, now, first time I started 1159 00:42:14,690 --> 00:42:16,729 to understand how that could work behind 1160 00:42:16,730 --> 00:42:18,739 the scene and then come back to hazal and 1161 00:42:18,740 --> 00:42:19,669 fix it. 1162 00:42:19,670 --> 00:42:21,889 But yeah, it really appu 1163 00:42:21,890 --> 00:42:23,989 very fast. That wasn't possible at 1164 00:42:23,990 --> 00:42:26,269 all. I submit some fixes 1165 00:42:26,270 --> 00:42:28,429 and may get 1166 00:42:29,480 --> 00:42:30,559 who were 1167 00:42:31,730 --> 00:42:33,829 remaining and where they are 1168 00:42:33,830 --> 00:42:35,689 without any interaction with the team 1169 00:42:35,690 --> 00:42:37,789 they'll fit back. So it was a 1170 00:42:37,790 --> 00:42:39,949 development process issue maybe from 1171 00:42:39,950 --> 00:42:40,849 the team. 1172 00:42:40,850 --> 00:42:42,049 I tried very. 1173 00:42:42,050 --> 00:42:43,369 I tried. 1174 00:42:43,370 --> 00:42:44,479 All right. 1175 00:42:44,480 --> 00:42:46,289 Next question from the front, please. 1176 00:42:46,290 --> 00:42:48,499 Yeah, I think we all know the concept 1177 00:42:48,500 --> 00:42:51,379 of IP cause with a standard HD 1178 00:42:51,380 --> 00:42:54,799 we have. And how 1179 00:42:54,800 --> 00:42:56,899 did you think about a review 1180 00:42:56,900 --> 00:42:59,299 process of the library that is building 1181 00:42:59,300 --> 00:43:01,639 with Spinell and how 1182 00:43:01,640 --> 00:43:02,579 could that happen? 1183 00:43:02,580 --> 00:43:05,089 So you say you don't want to rewrite 1184 00:43:05,090 --> 00:43:07,669 code every time, so we have to reuse 1185 00:43:07,670 --> 00:43:10,009 it and how can we review 1186 00:43:10,010 --> 00:43:12,709 it that that is good code, that 1187 00:43:12,710 --> 00:43:13,969 this is OK? 1188 00:43:13,970 --> 00:43:16,639 Basically, this is probably the next 1189 00:43:16,640 --> 00:43:18,419 announcement that I really have to do. 1190 00:43:18,420 --> 00:43:20,689 And it is 1191 00:43:20,690 --> 00:43:22,639 really something critical and 1192 00:43:22,640 --> 00:43:24,439 complicated, because when you have done 1193 00:43:24,440 --> 00:43:26,609 something in the library which has 1194 00:43:26,610 --> 00:43:28,759 that, you don't have to go back and 1195 00:43:28,760 --> 00:43:30,979 remove pectus that you have added, 1196 00:43:30,980 --> 00:43:33,349 though until now. 1197 00:43:33,350 --> 00:43:35,539 What is documented and unlike 1198 00:43:35,540 --> 00:43:37,699 the competition, could be interpreted 1199 00:43:37,700 --> 00:43:39,829 like safe, like using stream to 1200 00:43:39,830 --> 00:43:42,619 do things is safe because I already 1201 00:43:42,620 --> 00:43:45,079 but many attention if it in 1202 00:43:45,080 --> 00:43:46,080 it. 1203 00:43:46,640 --> 00:43:49,219 But yeah, there is 1204 00:43:49,220 --> 00:43:51,409 some work to do on the additional 1205 00:43:51,410 --> 00:43:54,439 library will come directly with Binaggio 1206 00:43:54,440 --> 00:43:57,019 and it will be one way 1207 00:43:57,020 --> 00:43:59,239 of expression until 1208 00:43:59,240 --> 00:44:01,759 now are really focused on spinning things 1209 00:44:01,760 --> 00:44:03,889 onto cars and the library 1210 00:44:03,890 --> 00:44:06,050 is the next step to go further. 1211 00:44:07,340 --> 00:44:09,229 OK, next question from the front please. 1212 00:44:09,230 --> 00:44:10,849 As is possible, which apparently she had 1213 00:44:10,850 --> 00:44:13,009 to create clawless logic 1214 00:44:13,010 --> 00:44:14,360 or sequence logic, 1215 00:44:15,920 --> 00:44:18,139 crotchless logic like 1216 00:44:18,140 --> 00:44:20,809 you mean you don't have a fixed clock 1217 00:44:20,810 --> 00:44:22,879 handshake everywhere between every year, 1218 00:44:22,880 --> 00:44:23,809 like and. 1219 00:44:23,810 --> 00:44:25,669 Yeah, like all the logic, everything. 1220 00:44:25,670 --> 00:44:27,049 There is absolutely no clock, no flip 1221 00:44:27,050 --> 00:44:28,789 flop, no flip flop everywhere into your 1222 00:44:28,790 --> 00:44:29,599 design. So. 1223 00:44:29,600 --> 00:44:31,820 No, no, sorry. 1224 00:44:33,070 --> 00:44:34,639 Yeah. I also wanted to ask you about 1225 00:44:34,640 --> 00:44:35,809 another tool. 1226 00:44:35,810 --> 00:44:37,339 Can you talk about the relation, the 1227 00:44:37,340 --> 00:44:39,559 relation between your system 1228 00:44:39,560 --> 00:44:41,779 and Blue Back that's 1229 00:44:41,780 --> 00:44:43,549 based on Haskell and it's been fairly 1230 00:44:43,550 --> 00:44:45,649 heavily taken up by Amity 1231 00:44:45,650 --> 00:44:47,209 and worked rather well on things like 1232 00:44:47,210 --> 00:44:48,709 eight to six counters. 1233 00:44:48,710 --> 00:44:50,789 So I personally, OK, 1234 00:44:50,790 --> 00:44:53,119 I hear about respec, 1235 00:44:53,120 --> 00:44:55,429 but I don't really know about it. 1236 00:44:55,430 --> 00:44:57,529 Um, I 1237 00:44:57,530 --> 00:44:59,629 can't really talk about 1238 00:44:59,630 --> 00:45:00,630 it. Sorry. 1239 00:45:02,300 --> 00:45:04,549 All right. Any other questions now? 1240 00:45:04,550 --> 00:45:05,550 Is your chance 1241 00:45:06,770 --> 00:45:08,450 to have any questions from the Internet? 1242 00:45:12,740 --> 00:45:14,389 All right, if anything comes to your 1243 00:45:14,390 --> 00:45:16,039 mind, please find a speaker afterwards 1244 00:45:16,040 --> 00:45:17,599 and before you leave, please take the 1245 00:45:17,600 --> 00:45:19,099 trash out with you. 1246 00:45:19,100 --> 00:45:20,569 With that, let's give a final round of 1247 00:45:20,570 --> 00:45:21,849 applause, Tushar. Thank you.