adreid | 1 year ago | on: How to improve the RISC-V specification
adreid's comments
adreid | 1 year ago | on: How to improve the RISC-V specification
adreid | 1 year ago | on: How to improve the RISC-V specification
Specify the key formats in a json/xml file then go one by one through tools, docs, etc changing them to use the machine readable file.
adreid | 5 years ago | on: Rust testing or verifying: Why not both?
adreid | 5 years ago | on: Rust testing or verifying: Why not both?
adreid | 5 years ago | on: Rust testing or verifying: Why not both?
adreid | 5 years ago | on: Rust testing or verifying: Why not both?
adreid | 8 years ago | on: Are natural language specifications useful?
Also, some things are so hard to specify formally that we still don't know have any kind of formal spec. Memory concurrency semantics is an example. It is only in the last couple of years that we got a good spec of fixed size memory accesses. Then Peter Sewell's group drops the bombshell that if you have mixed size memory accesses then you can't make programs sequentially consistent even if you add a memory barrier after every single memory access. But we still don't know how to formally specify the memory orderings associated with atomic accesses, instruction fetches, page table walks or device accesses. So, until then, we use the best natural language definition we can and hope we will be able to formalise it soon.
Also, there are parts of the natural language spec that I had not seen any value in... until I started worrying about whether the spec itself was correct or could possibly be shown to be correct. And now that I do worry about that, I am seeing new value in those parts.
adreid | 8 years ago | on: Is it important to code away from work
adreid | 9 years ago | on: ARM Releases Machine Readable Architecture Specification
And within ARM, there were lots of people transcribing bits of the ARM manual into various forms: C/C++, LLVM .td files, Verilog, spreadsheets, etc. Apart from all the wasted effort, this also created a verification problem: each transcription had its own set of bugs that now had to be fixed. And it missed a verification opportunity: if everyone used the same master copy then each time one group spots a bug and reports it, the spec gets better for everybody. I talked about this virtuous cycle at S-REPLS last year: https://alastairreid.github.io/papers/srepls4-trustworthy.pd... (S-REPLS is a programming language seminar in SE England.)
adreid | 9 years ago | on: ARM Releases Machine Readable Architecture Specification
Topics included the license, what you can do with it, what other specs are out there (for ARM and others), ARM's love of arm/leg/limb-related acronyms and how much people hate XML.
adreid | 9 years ago | on: ARM Releases Machine Readable Architecture Specification
adreid | 9 years ago | on: ARM Releases Machine Readable Architecture Specification
Or, on a more technical note, my feeling is that if that is what you wanted to do, then you would not start from the style of specification ARM has released.
adreid | 9 years ago | on: ARM Releases Machine Readable Architecture Specification
adreid | 9 years ago | on: ARM Releases Machine Readable Architecture Specification
I would say I have a love-hate relationship with XML - your feelings seem to be less ambivalent. One good thing about XML is that you can convert it to HTML. Have a look at ISA_v82A_A64_xml_00bet3.1/xhtml/index.html (in the AArch64 tarball) - I find this to be the easiest way to navigate the ARM specs because I can follow hyperlinks inside the ASL code that take me to the function definitions. And keep going until I have read everything about what the ADD instruction does. Then I switch to the LDR instruction and I can chase down memory accesses and see code to handle big-endian configurations, unaligned accesses, page table walks, page fault handling, etc. Once you have used this, you will not go back to PDF.
adreid | 9 years ago | on: Engineers Create the First Dust-Sized Wireless Implantable Human Sensors
You could feed it electromagnetic energy - but then all you really have is a smaller version of the Great Seal bug https://en.wikipedia.org/wiki/The_Thing_(listening_device). I wouldn't be surprised if those already exist in about this size and the paper linked to from the web page talks about several such devices (and how they are not as well suited for implantation).
adreid | 9 years ago | on: Engineers Create the First Dust-Sized Wireless Implantable Human Sensors
It seems that you could do a lot more with it if you added a battery and some memory so that it can record signals when the ultrasonic is not present? I am thinking of things like the Michigan Mote which was also about a cubic millimetre. http://www.eecs.umich.edu/eecs/about/articles/2015/Worlds-Sm...
adreid | 9 years ago | on: Verifying ARM processors against the official ARM specification
So if you are going to write a specification, you really want to get maximum bang per buck out of the effort. Which means that it has to be good for many purposes:
- documentation - verifying processors - dynamic verification (i.e., testing) - formal verification - testing test suites - verifying application software - dynamic and formal verification - verifying OSes, RTOSes, microkernels and other bare-metal software - verifying compilers - generating machine readable descriptions
Verilog is great for one of these - but less good for all the others. Starting with a relatively neutral language gives you a lot more flexibility. It makes any individual task a bit harder than if that was your only goal but you save effort overall.
There is also the virtuous cycle that bug fixes and improvements that help any one goal are folded into the master copy - so all other sub-projects benefit.
adreid | 9 years ago | on: Verifying ARM processors against the official ARM specification
Another Haskell Hardware DSL is Lava: http://ku-fpg.github.io/software/kansas-lava/ Chisel is very similar to Lava in many ways although I think Chisel has been used for larger designs.
adreid | 9 years ago | on: Verifying ARM processors against the official ARM specification
The paper is about searching for bugs in ARM's designs - not designs by ARM's architecture licensees. (ARM has two types of partner: those who use ARM designed processors exactly as provided by ARM and those who create their own processors implementing ARM's architecture.)
The tests are performed on the Verilog. There are very good and thorough techniques such as Logical Equivalence Checking (LEC) for verifying that what gets taped out actually matches the Verilog.
We used the v8-A architecture spec that provides Virtual Memory and other features you need to support Linux, Android, etc. This is the architecture that applies to phones, tablets, servers, etc.
And we used the v8-M architecture spec that applies to micro-controllers.
Also, it is worth saying that this is only one of many verification techniques used. This one focuses on the processor pipeline rather than the memory system, instruction fetch, etc.
https://alastairreid.github.io/dissecting-ARM-MRA/