Minutes of Weekly Meeting, 2008-09-15
Meeting called to order 8:20
1. Roll Call
Brad Van Treuren
2. Review and approve 9/8/2008 minutes
(moved by Eric, Second by Ian) - Approved
3. Review old action items
4. Discussion Topics
- Results and Status from SJTAG Survey Activity
- [Ian] This is actually dead right now and can be taken off the agenda.
- [Brad] Are we going to put a composition of the graphics of the results on the web site somewhere?
- [Ian] Yeah, I haven’t gotten around to it so far, but it is certainly something that I am going to. At the moment I have a note up saying the survey is closed. I think I will put a link on that page to show them the resulting graphics on some page.
- Status and review of white paper sections
- [Brad] We did talk about the overview section is probably stable right now.
- [Ian] I think so. I feel you, yourself, Brad, need to have a final look at it as well.
- [Brad] Once I can look at your new UML this week once my tools are reinstalled, there may some things from that which we may want to throw in there as well.
- Use Case: None.
- Hardware: None.
- Language: None.
- System Data Elements Continued Discussion
- - Discuss homework of the need for descriptions vs. automatically detecting the information directly from the system data provided from other automation tooling (e.g., CAD)
- [Brad] What I want us to spend some time on first before we get into Gunnar’s slides is discussing whether there is a need for descriptions that fall outside of the information that we currently have for the tooling vs. information that can be automatically gleaned or mined from the available information to build up what we traditionally do in something like an HSDL. As we discussed in the past, many of the tools will actually construct up the topology of the chain based on the netlist information in some predetermined information of intelligence in the tool for how to look for gateway devices and stuff like that.
- [Ian] One of the things that went through my mind thinking of this is that from the perspective of perhaps an OEM board vendor, I wonder how comfortable they would be with releasing a board level netlist information with an alternative of maybe giving a higher level description. It is just on these intellectual property/security type issues. I know I have said in the past that there isn’t an awful lot of IP given in a netlist when you get down to programmed devices. I could see more of an attraction to an HSDL type description rather than working straight off of a raw netlist and bills of materials and so on.
- [Brad] I think just having the HSDL type information of the topology of the chain in itself is not as useful for many of the things that have to be done as one might think.
- [Ian] I agree with that. Certainly, HSDL as it stands isn’t going to give you enough, but I just wonder if there is a way you can… I am sort of thinking like the way a BSDL file doesn’t necessarily tell you everything how the silicon inside it is wired, but it tells you enough on how to use it for a boundary-scan application. If you can get to the same level of abstraction in describing the board without needing to describe in too much detail exactly what’s in it, it’s kind of like an object orientation model of something which you’ve got a description of something which tells you what properties it has and what methods you can apply to operate on those properties, then you’ve got enough to work with it. You don’t necessarily know exactly how it behaves internally. I may becoming a bit too abstract in thinking this way. It fits better than to try to build up a hierarchical model of what you are trying to deal with.
- [Brad] This is some of the reason why we at Alcatel-Lucent, really the Lucent days, wanted to develop a concept of boundary-scan plug-n-play so we could just have a repository of pre-generated tests that were available for a board that we could extract in a uniform fashion from a design and then be able to deal with changes of boards and new boards that were put in without having to have the detailed netlist available for the board itself. Everything we needed to be able to use to apply the test was self contained on the UUT in a form that we could extract and apply.
- [Ian] Yeah. You can extend that a little bit further as we kind of touch on last week where you could also include what operations are allowable at the board boundary: what lines you could drive and what lines you could sense so that you can then start to create it up into higher levels.
- [Brad] I think that is going to be an interesting description. I don’t think it is going to be that difficult of a description, but I think it is going to be something that is a whole new way of thinking of generating tests because it is going to be more of a real-time test generation.
- [Ian] But isn’t that really what you are getting at when you start talking about the dynamics of the configurations of systems and partially populated system?
- [Brad] I think we are going to need to have some more intelligence in the test execution engines, possibly not generate things, but more of compilations or assembly of what can be done at run time.
- [Ian] An aggregation of things already developed.
- [Tim] Ian, when you first spoke I got the sense when you wanted to add abstraction to the netlist, I kind of got the idea that you are thinking the netlist would be available on the product itself and that somehow the software would be sucking in that and developing or creating vectors on the fly and that was the need for the abstraction, but I don’t think that’s the case anymore.
- [Ian] No I wasn’t necessarily thinking that the netlist was immediately available. At some point in the development of the operations that you’re doing through the boundary-scan, if you don’t have that other type of description, then at some point you’re going to have the netlist available and I was just thinking about I could see the concerns raised by an OEM board vendor at handing over what is fundamentally the design of the board to let someone else develop tests for it.
- [Tim] Yeah, but you have NDAs with your contract vendors.
- [Ian] If you are getting boards build for you by someone, on a specific program, you would probably do that, but I could see a specific situation if you want to get into more of the consumer type electronics environment you could end up in the case where you have low value boards where you really don’t want to start getting into all the contract issues with NDAs and so on. Maybe I’m just thinking about something that wouldn’t really happen in practice.
- [Brad] I know we have had the case with some of the ATCA vendors that they actually committed to giving us netlist information of their boards, because they realize being able to integrate with mezzanine cards and things like that it is necessary to have netlist information to be able to generate interconnection tests. I don’t know if they would do that with every customer that they have.
- [Ian] I don’t know what the answer either would be, Brad. You could understand that OEM vendors would be more comfortable working with an abstract description rather than the detailed design information.
- [Brad] Yeah. The other alternative would be to have some sort of a format that is similar to the way device designers have now to be able to provide an encoded representation of their circuit that you can bring in for simulation and stuff like that. Thus, you can’t really get access to the details of what’s inside it, but it is useable for simulation and things.
- [Tim] Similarly, there would also be a need to encrypt the native programming files rather than have all those things sitting out there pretty much for anyone to pirate or corrupt. There might be a need to standardize some kind of an encryption method at the system level.
- [Brad] Yeah. Does it sound like we have everything we need in the CAD information and the available stuff that comes form the design group or are the additional things we add all the time as we get to test development.
- [Heiko] I think it depends on the netlist format because sometimes we get a netlist format that uses stock number or some weird numbers for device types and then, based on netlists, you would not know what type of components those are. If you don’t know what type of components you are dealing with, you can’t really generate a test. At least a BOM might be needed or some mapping between those numbers and device types.
- [Ian] I think the other thing that really wouldn’t be necessary all that evident in the netlist information is the affect of any analog circuitry related to power supplies and so on unless you also start introducing spice models and things like that for analog parts and any mixed signal bits could be open to misinterpretation.
- [Brad] Well, that brings up the point what I see a lot with tooling is the definition of what nets are the power and what nets are the grounds based on the naming that is being used. Every one of the tools that I have seen have had options available for the user to specify in the naming into the tools for those. I think this is one thing that we are going to have some sort of description on as applied to the tooling to give more intelligence.
- [Ian] That may get you the power supply issue, but if you have something like an analog comparator that is supplying a TTL level into some other part of the circuitry, that is something that is not going to be quite as easy. You can’t tidy that away under things like power supplies because it is actually doing something quite different. In my experience you always end up with some nets that need to be constrained in some way and you need to be able to describe this to the tooling. I don’t think you will ever get to the situation where everything is going to come out straight from the CAD files.
- [Brad] I would agree with that based on what I have seen so far.
- [Brad] The other piece that I think we have talked about before is the point of the connector to connector mapping. The naming from one side to the other side can be quite different and the number of pins used could be quit different – it could be a subset of the other connector. I don’t think that type of information will be automatically given unless we can state the connection is based on some sort of a standard that is used in the design.
- [Brad] Do people feel we need to provide some mechanism that says this is how you control a particular gateway or linkage device to manage the chain or do you think that is something that should be outside of the scope of SJTAG and left as an exercise for the tools to support?
- [Heiko] Are you talking about the actual scan chain bridging devices?
- [Brad] Yes.
- [Heiko] I think if they have a standard protocol or standard behavior, they can probably be handled by the tool since the tool can handle that already.
- [Brad] The problem is we don’t have any standard interfaces. We have ad hoc standards or defacto standards that people are using right now.
- [Ian] I think that situation leads to varying support by tools depending on which tools you are actually using. We’ve run into this with some of our work share partners where they’ve used a configuration of devices that are supported by their tooling and not by ours and vice versa.
- [Heiko] I guess especially if you want to use some programming tools like Xilinx or Altera they wouldn’t be able to handle it.
- [Ian] No, they fall over with things like that at the moment.
- [Heiko] Well then they couldn’t be able handle some sort of SJTAG format either.
- [Ian] I would be inclined to think that we wouldn’t be expecting any kind of vendor tools to support the SJTAG. We would just be looking at third party all purpose tools if you like. The device vendors, it is not really their business to support anything other than their types of devices. As soon as you add non-Xilinx parts in your chains, you can’t really expect Xilinx’s to support them because that is not the type of business they are in. Certainly, people like yourself, Goepel or JTAG Technologies or ASSET or whoever, those are the people you go to when you want a tool that has to deal with a board with a mix of parts on it and you would expect that tooling to deal with it.
- [Brad] I would expect, Ian, that the tools from Xilinx, Altera, Lattice and all of them would be able to deal with standardization in these standards, things like BYPASS of other vendor’s devices in being able to seamlessly interoperate with those devices in the chains based on what they know of the standard.
- [Ian] Yes, if you’ve got a standard there. Yeah.
- [Brad] If we actually define some way of ensuring easy access in a well defined manner in SJTAG, I don’t think it would be out of the question to have these tools be able to support those kinds of connections. It is just the ad hoc stuff that is non-standard that is out of the question.
- [Ian] Yeah. That is probably right.
- [Brad] And that goes for the emulation tools and stuff like that as well.
- [Peter] I agree, Brad. If it is written down and is part of the standard, they are going to have to deal with it then.
- [Brad] Otherwise, you are going to have to jump through hoops like we did in the early days to support access to their devices in providing their own dedicated paths.
- [Ian] Yep. And that is certainly something that has caused us a bit of pain over the years.
- [Brad] That begs for another question. We have all had to create isolations in our circuits to be able to handle these kinds of cases in the secondary chains. Do you people feel that SJTAG should have some sort of standardized way in dealing with this isolation so we can be sure we can have some sort of a chain that can operate independently as well as part of an overall topology or is that something outside of our scope.
- [Peter] The only area where it might get tricky, Brad, as we spoke before is if we specified only an API or some of that nature, you’re getting down to the nitty gritty of the gateway device and how it functions and therefore you are putting the ownice on all the manufactures that we all have to support this particular mechanism that is going to be specified. From my side, I don’t see that to be too much of a problem, but it would not happen overnight I don’t believe. Does that make sense?
- [Brad] I am curious what people think as whether this is something SJTAG should be worrying about or is that be outside of our scope?
- [Heiko] Part of SJTAG is to apply the standard board level type applications which may include FLASH programming and sometimes worthwhile to have the first CPU device where the TCK rate can run faster than for the CPLDs or FPGA. So keeping the CPU in a separate chain than the FPGAs makes sense. You might want to have one or more devices in a separate chain for certain applications.
- [Brad] I think this may be too early to be asking that question. Obviously, this is something that could be a guideline or a notice in the standard and not necessarily a rule. I think it is something that we need to educate the community on about the need to be able to support these kinds of features and at least consider it when we do our domain analysis.
- [Brad] Is there anything else? I sound like everyone is feeling that automation that is 100% from the CAD information and various other sources is going to be insufficient to be able to support SJTAG level testing. I think we are all leaning to some level of description that is additional and augmenting what is available for the provided information to be able to give some intelligence to the tools to effectively create the tests and access that we need to have at an SJTAG level. So we can’t have something that is totally turn-key, we seem to have to have some sort of human intervention.
- [Eric] Yes.
- [Tim] Unless there is a way we can actually put hooks into the CAD data that would have some kind of SJTAG attributes that can be applied and you then know these are some kind of special function that can be used later on, not really used by the CAD tools, but some kind of a place holder that could be used down stream. Similar like, for instance, when you create a schematic you put a net property, say this net is a power node or a clock node, so your down stream layout tools use this information to decide the trace thickness or match lengths. Similarly you could provide some sort of attribute that could be used by our SJTAG tools like your analog attribute where you could say that you apply some level and you get some value out.
- [Brad] It is certainly something that we could entertain. As Ian pointed out last week, we are missing one group of people that would be quite useful for these type of discussions is the EDA vendors. They would be the best ones to answer questions like that.
- [Ian] The idea of attaching a property does seem like a reasonable one. If your tooling then extracts the netlist, if it knows the properties are formatted in a particular way in there, they can go looking for ones that are SJTAG properties.
- [Brad] That is also dependent on whether or not the designers take the time to populate that information.
- [Ian] You have got to make sure the designers take the time to put down the information for boundary-scan to begin with.
- [Brad] How often do you have to do rework because of missing nomenclature.
- [Ian] That is it exactly. Most times these have to be peer reviewed anyway. It is almost like part of the design review process is to make sure the SJTAG properties are attached.
- [Ian] I could see how it could work. I can also see how it could be very difficult.
- [Peter] It would be automatic though if it would be with how to describe the attributes on the nets and everything else. Then you could build up your hierarchical system. It would be possible, but then you would need your netlist sent out to many different people and I think many COTS vendors would push back on that type of situation.
- [Ian] Maybe there is a half way stage in there where you can extract if you like a portable description format that is derived directly from the CAD data that may then be passed on to the end user.
- [Brad] Or even an XML format.
- [Ian] Yeah. Exactly.
- [Peter] It wouldn’t be hard to have a script that gets passed a netlist that just looks for SJTAG type attributes and you would just build your information up from that.
- [Brad] I think that is some good information and I am just looking at the time and I would like us to get through Gunnar’s presentation. It isn’t that long, but it would address other issues in our language.
- - Gunnar's STAPL++ (http://files.sjtag.org/Ericsson-Nov2006/STAPL-Ideas.pdf)
- I will try my best to represent what Gunnar was presenting to the group.
My feedback to Gunnar was captured in:
As you will see, Gunnar presents a strong case and demonstrates clearly why an object oriented perspective is necessary to represent entities at the system level. He also presents a strong case for why current vector languages are inadequate.
- Slide 1
- [Brad] I am sure I am not going to do this as good as well as what Gunnar is able to do and I am trying to represent something Ericsson has done with an MSc summer student that was working for Gunnar in providing this capability. I will give it my best shot and I think we can at least glean the important information from it. If there are any questions, I am sure we can forward them to Gunnar and he can respond to us in email as that is a better forum for him right now.
- [Brad] On the first slide, this is all about a new player strategy based on STAPL, but it is STAPL with extensions. It looks somewhat like STAPL, but not totally like STAPL. This is some ideas that Gunnar had shared earlier on in 2006 with some of the members of the SJTAG team to show some ideas on program design and different data structures he is proposing to alleviate some of the problems he is having with ASIC level testing.
- Slide 2
- [Brad] So I will move to slide 2 that is labeled Why STAPL? His reasoning behind using STAPL is that it is already being used for embedded test and for providing unique test factors and programs to boards. The real advantage in both STAPL and SVF is that you can have generic software that is able to apply these vectors to the boards themselves so as you go from board to board you can reuse the same software to be able to apply those tests. STAPL, even though he says is a de facto standard and widely used standard, there is a JEDEC standard for the language, whereas SVF is a true ad hoc standard/ de facto standard that people are using. So Gunnar’s feeling is that STAPL is probably better supported from an aspect of standardization than SVF is right now. The third item he wanted to ensure is that this has a lot of software behind it from a couple of different vendors to provide freeware players, both at an ASCII level and at a binary player level with things like byte code compiled code to be able to apply STAPL based programs. The other key thing is there is a migration path to go from SVF to STAPL. I don’t know if anyone has used it, but I know Altera has one that is called svf2jam where JAM is the name of the language Altera called STAPL prior to it becoming a standard. I think there is another one available as well. Taking an SVF path to STAPL seems to be quite feasible. One of the things Gunnar noticed is that all of the test generation tools are able to produce some form of SVF out of their test generation process, so the interconnect test and traditional testing that we do within a board can be produced into SVF and then converted over to STAPL and be able to be applied through a STAPL player instead of an SVF player. STAPL can represent vector information just like SVF can in a sequential format, but it also provides things like variable and some flow control constructs so you can do some things like dynamic vectors. I know I have found that to be quite useful for certain interrogation operations I need to do in the field like I can write a STAPL program to behaved based on the results of some value I have been able to read from the UUT which is something I can’t do with SVF.
- Slide 3
- [Brad] I am moving to slide 3 which is called BScan Vectors and Test Control SW. Basically, what STAPL provides is a vector language capability and the primitives that are necessary to represent vectors and apply vectors, but it also adds in the aspect of flow control to be able to make decisions based on the results of those particular patterns to be able to change the way that you apply the patterns from that response you have gotten. Things that Gunnar wants to be able to add are these extensions to be able to manage the instantiations of these components and to provide some level of control in the DFT process for IP that people are providing in their tools which is more of the instrumentation that people are starting to add into their devices. There’s this whole concept of parallel procedures that are being talked about, especially in the 1687 organization, where you’ve got certain logic blocks that are replicated in a design that have some level of testability into them, things like built-in-self-test features that you would like to be able to run in concurrent fashion to be able to take advantage of the concurrency in the time of operation. So there are things that can be done in parallel that the language needs to be able to address and at least identify and specify to the programming tools that this can take place. Right now the current languages don’t have that. The nice thing is that you can reuse procedures in STAPL for other items that have to take place and that can simplify the test programming. It is very easy to call a procedure and write one procedure do to initialization or an erase sequence that can be reused for various types of operations. Also, there are some interactive operations that can be possible to be able to deal with the integration and verification labs to be able to allow people to do certain things at certain times, so a language would be nice to have something like that. STAPL provides the PRINT statement even though the standard does not recommend the use of PRINT for any general use of the language. There is also an EXPORT statement where you can define keywords with values of bit vectors or integers to export out to the calling software to be able to deal with communications in the native language of the tooling that is being used as well as to provide synchronization mechanisms. What Gunnar is proposing is being able to put unique STAPL++ programs on each board similar to what we are doing with STAPL or SVF right now and that you would use a common STAPL++ player to apply these tests. So it is very similar to the flow that all of us are using right now, but it is just a different language that is expanded in what it is capable of.
- [Tim] One thing that comes to mind is if you have a bunch of boards in a system that were pretty much were all identical boards and there were long erasure cycles going on, one advantage might be if you had some kind of a broadcast feature where you actually program them all concurrently. Maybe the ISC format makes more sense for that. Is there any kind of ISC that does STAPL conversions that can happen?
- [Brad] I’m not familiar with any right now. Programming tools provide some level of translation to STAPL to do programming of their devices, so you can do ISC through STAPL. Depending on what tool you use, there are benefits with the Altera player, there are benefits with the Lattice player, and then there are benefits with the Xilinx flow to provide something like 1532 support, but none of these players that I have found today can support the full capability that 1532 supports in its standard. The goal is to be able to provide some level of concurrency available in programming or configuring the FPGAs and CPLDs in a design.
- Slide 4
- [Brad] This is just giving an overview of what his MSc experiment was set up as. They have a PC based software test manager in the terms of SJTAG that was running some boundary-scan and debug software as well as some of Ericsson’s test and control software. There was an Ethernet link between the PC and the unit under test. There is a test controller that is residing on one of the boards within the system and that is actually applying or where the STAPL++ player resides. There is a driver that goes to the hardware to do the protocol conversions to 1149.1. The kind of commands that Gunnar is using between the test manager and the test controller you can see there. There is stop on fail, run an action, run a particular procedure. The failing vectors and the execution trace can be returned. The software you can see he is basing it on some of the Altera STAPL player, but they now have a totally new rewrite of the STAPL++ player that is more efficient and more optimized. So they have their own stuff that is running now. Basically, what I wanted to show you on this slide is that there is a setup that is controlling from an external source as a test manager and the STAPL++ player is just receiving instructions about what STAPL++ program should be applied in the system based on what is told from the test manager. What you can see, which will be on a lot of other slides, there is an ASIC B and ASIC C that is installed on the board he is testing. He is going to be focusing primarily on the ASIC C in the slides we are going to see coming up.
- Slide 5
- [Brad] This is just a bigger picture of what the hardware topography looks like. We have this applications board, which is the board going to be the UUT and the test controller platform that is connected to that to be able to apply those tests at a system level.
- Slide 6
- [Brad] The take away from this slide is that there is some sort of a mapping to the serial chain of where each of these devices reside and that there is a TDO segment, a TDI segment, and a MASK segment in the STAPL++ language for these particular devices. So the point that all of us know is that you have a concatenation of these data registers to give you the full register data that is going to be applied in the full operation of the language. Right now the way we deal with things is that we translate with tooling the device specific information and glue it all together in a board level description or even a system level description of a single chain that is all wired together and then apply that all at once in a batch operation as one vector and read back the response. We are losing the information as to where each device resides within that segment. That is what he is trying to highlight here.
- Slide 7
- [Brad] This slide is just trying to show pictorially what the block diagram was trying to show as the schematic before. Now what he is trying to show is that he has devices in the chain that just have a BYPASS in the chain following a reset in there and there are other devices that have ID codes so you have the ability to do an IDCODE check on it. His ASIC, on the left hand side, has the bypass, the idcode, and the PLL check. There is also memory bist controllers and logic bist controllers. I think the number was 55 MBIST and something like 19 LBIST controllers within this one ASIC. So when you start looking at 55 blocks that are replicated in one ASIC that are opening themselves up to parallelization, you can see that Gunnar really does show a good case for the need to be able to do parallel operations within our language.
- Slide 8
- [Brad] This gives a little different perspective of the whole idea that this scan chain that we are being able to apply is really made up of concatenation of data registers within each of these devices in an ordered fashion based on what the netlist topology is giving us. So we have one device that is going to be in BYPASS, which is one bit. Another device has its LBIST activated that is shown in red. We have another MBIST in a device that is activated that we want to be able to control. The whole idea that Gunnar is trying to show here is that it would be nice to show with some description in the language, that he is showing with a PARALLEL block in the language and ends with the END PARALLEL block. He is introducing a similar construct that is in the STAPL language right now that is the CALL statement. Instead of calling a global scope procedure, he is now calling procedures that are more like methods of an object. So you create and instance of component 3 and call it component 3 which represents that lower left device that has the BYPASS and you call its BYPASS procedure to setup and configure the BYPASS information. With that comes to the player the information of where it is located within the chain. Then you have a call to C1’s LBIST procedure that is going to configure the LBIST information and you would be able to identify to the player where it resides in the chain. And likewise with C2, the MBIST. So there is additional information that would be provided to the player at the time when you make the call to these instantiated methods to begin to letting the player be able to assemble the vector and be able to apply it over time.
- Slide 9
- [Brad] This slide just shows how the devices are wired together and this is in a multi-drop environment where he has a SCANBRIDGE device installed on here. So he is able to communicate with each of these devices using his STAPL++ player through the multi-drop architecture.
- Slide 10
- [Brad] This gets into the whole meat of this. Slide 10 describes the typical STAPL structure for those that don’t know what STAPL is right now. There is a NOTE block or NOTE set of statements that you can use to describe particular notes about how the program and the hardware you are trying to test that can be preserved as an artifact of the test. Then there are ACTION statements which define things that you would be able to do. Things like run program, or be able to just say PROGRAM for programming a device, ERASE, VERIFY. It could be an action of PROGRAM which has sub-actions available to it. So this is really the entrance point to a STAPL test is to define what ACTION you want to be able to run. Having multiple ACTIONS allows you to use one STAPL source file for multiple capabilities really leverage the ruse factor to be able to be able to keep one copy of the source in the embedded environment and be able to apply multiple things with that same source file. The PROCEDURE blocks are defining a set of statements that have to be executed in order and it is typical programming procedure that you would call to do certain operations. The interesting thing is how it ties with the next one. You have global DATA blocks and DATA blocks that are associated with specific procedures. These define what variables are going to be used within the scope of the procedure or global scope. I talked about the PRINT and EXPORT statements before so we don’t need to go into that. Of the flow control statements, there are a lot of them. Most of the time you will see the FOR and IF statements used mostly in the language. It does give a lot more power than what you can get with a language like SVF. The drawback is that when you do a scan, you have to save the response data in a Boolean array. You then have to test the response through one of these flow control items, so it is not easy in the player to determine if this comparison is just a generalized comparison based on the result of a scan or is this just a general comparison done to further identify when there has to be a change in the flow of the program. So it is not real easy to be able to correlate and associate that this is a response that is being tested with a known good response value vs. just being able to look at data patterns itself. This is one drawback with STAPL I have found. With SVF you get a response vector back that is directly associated with the scan vector being applied. The CRC statement is the last line of the file and it gives a CRC check code so that at runtime you can determine whether there was corruption of the program before you apply that program to the hardware.
- Slide 11
- [Brad] The key things, that Gunnar is adding to the language, are shown on slide 11. This is where he adds in new blocks. The first is the structure mapping where he has the class and instantiate maps which will map these components and their hierarchical blocks to their procedures and data. It is very similar to languages that you see in C++, Java, Python and others, where you define a class and the components it represents and you define these procedures that are available for that particular device. And then there are instantiation statements that will create up for a particular type of class, components using particular names similar to what VHDL and other software languages do. So you can say that this particular component is of this particular component type. Then you can access particular components by using dot hierarchical pathing and access the variables that are defined as part of the class. And that is where it is very similar to Python and languages like that. To call a particular instance, you would use a dot separated path nomenclature in the hierarchy to specify that that takes that particular call is calling that particular procedure for that particular class for that instance. For parallel execution, we already talked about. You would use the existing CALL statement to call each particular instance. The important thing here is that the IR scan and DR scan operations are really concatenated together and synchronous. So even though you have multiple calls taking place, these are done in parallel so that when you get to the point you are going to do a scan operation, the synchronization mechanism is the scan operation. So as you are doing your CALL procedure, it is going to set up the Boolean array information as necessary and when it gets to the scan operation it will do its scan at the point the other loops are going to do their scans to provide the synchronization. As far as backward compatibility goes, it is adding language features and not removing any language features so the old STAPL programs should work and do work with this new STAPL player as is with no change required. There needs to be some sort of a top class instance that is going to be implicit in that case for the legacy applications. For the compiled STAPL, any STAPL program can be compiled to this format so you can get things like EVF and BVF vector so all these can be translated into a STAPL type of program construct as a translation mechanism to be able to be applied with this new player. The only problem you would run into is with STAPL programs, you can’t really apply these as EVF or BVF or even SVF 100% of the time because if there is any kind of flow control in a STAPL program, you are not going to be able to deal with any type of change required to the vector sequences. I think what he is saying is that there are certain subset of programs that could be applied to existing subsets of players that are based on SVF, but you have to be very careful of what you are doing.
- Slide 12
- [Brad] This is giving an overview of the building blocks that can be applied. There is one thing that he does show here that ties with the last item that we talked about there. There may be a possibility of having an SVF output from this player, but typically you are going to access the hardware directly. If you do implement the SVF writer then you are only going to do the subset of commands and not the flow control aspects that are going to change the way the vectors are to be applied. There may be some way to get the concurrency applied through the SVF with certain applications. Basically, there is this command interface, you have a parser that reads in the STAPL++ code and that is from the internal STAPL++ structure. You then have the STAPL++ player that is executing it that applies it to the hardware in the order of the statements that are being observed. Nothing really new from what we know with the existing players.
- Slide 13
- [Brad] The key here is slide 13 that I wanted to get to. What Gunnar is talking about is the player itself is really an event queue and so as it executes the statements and it does the calls that you see with just the green circle with the C in it, that’s just doing a straight call. If you have a CP, you have a call within a parallel block. So if you do a straight call, it will be just like what STAPL is now. You get particular statements that are called to set up Boolean arrays followed by shift operations that are represented with the I/O circle. That is followed with some type of flow control statement to determine whether there was some type of error or not. If there was an error, you would then use the EXPORT or EXIT statements to terminate the program or send an event back to the calling application to say, “Hey there was a problem that took place.” Otherwise, you could continue with the execution flow by coming out of the flow control bubble into the normal flow chain. When you get to the CP you begin to execute in separate threads. So the first call in the parallel block you get similar things that were taking place in the first column, but in this case it is not going to apply the I/O until a later point. That point is based on the I/O is going to be addressed with the second CP. So, there will be flows taking place that are going to queue up the first I/O in the first thread and then it is going to queue up the second I/O in the second thread. Then all these I/Os are going to come along in the event queue saying we have this one CP and a second CP followed by a list of I/O. If it finds a list of I/Os, it is going to concatenate all the I/O information into a single vector and apply then together to the driver. The flow control is then later going to be checked later on in the event queue following when those particular scan where those two I/Os are taking place. So that is how he is using the event queue mechanism in how he deals with the synchronization of the calls and the I/O operations. Really, that is the end of the language description, but it gives you an overview of why there is a need to be able to do this parallelism that is lacking in the current languages.
Is there any questions?
[Chuckles from the group]
- [Brad] As a follow up to this, I did respond to Gunnar when he first presented this information. It can be found in the word document I reference on our sjtag.org site. There are issues, especially when you get into the synchronization issues that have to deal with in-order and out-of-order problems that are not handled in his language. I am not convinced yet that there is a turnkey solution available with this language right now. I don’t think Gunnar would disagree with that either. It does address the issues at hand and shows the need for these types of features.
- [Brad] With that, is there any further discussion people want to have with this or do you want to just digest it this week and talk about it more next week?
- [Ian] I think it takes a bit of absorbing.
- [Peter] I’d say next week to give everyone a chance to absorb and digest things.
- [Tim] Does he have some example code that we can look at that is not proprietary?
- [Ian] I think there was some, but not on our SJTAG web site.
- [Brad] I think there was some shared at the Nordic Test Conference. I can ask Gunnar if he has some he can share.
- [Ian] I think that’s where I saw some.
- [Brad] I will put that as an action for me to contact Gunnar for some reference source code.
5. Schedule next meeting
Wednesday, September 24th, 2008, 8:15am EDT
Monday, October 6th, 2008, 8:15am EDT
Monday, October 13th, 2008, 8:15am EDT
Wednesday, October 22nd, 2008, 8:15am EDT
Fringe Meeting at ITC Thursday, October 30th, 10:30-12:30 PDT.
Monday, November 10th, 2008, 8:15am EST
Monday, November 17th, 2008, 8:15am EST
Wednesday, November 26th, 2008, 8:15am EST
6. Any other business
- Poster session, slides, poster, handout
- Need to confirm what to have on POSTER slides. Slides for session 19 due Friday. Need to reduce number of slides. Put on agenda to discuss some suggestions for handout.
- Need to close out scope and purpose soon.
7. Review new action items
- Brad contact Gunnar for some reference source code
- Brad contact Rohit to find out what is available for access at Fringe Meeting.
- Brad to assemble discussion on ITC poster session
( Moved by Ian, Second by Carl W.)
Adjourned at 9:50