(Originally published at AllProgrammablePlanet)
"... Recently, I completed "The Wheel of Time" novels -- a fantasy series written by Robert Jordan and Brandon Sanderson over a period of two decades. Events in the story take place in a fictitious world created by the author's imagination and brought to life in words -- a creative process that I think is strangely akin to FPGA design.
An FPGA designer -- or a team of FPGA designers -- often play the role of the Creator, picking a suitable target device as the universe in which events will unfold. A FPGA/CPLD has both fixed and flexible resources (the digital equivalent of mountains, seas, plains, and other geographical features) in which IP modules of various characteristics (cities and settlements) can be situated. Some cities are well understood, whereas others are veritable black-boxes, shrouded in mystery.
Depending on the plot, engineers map capabilities and features to a mix of hardware (warriors and physical combat characters) and software (magic-users and practitioners of the arcane arts). The central theme can be an all-consuming quest: for example, "The Search for the Holy Frequency" or "The Lord of the Ring Oscillators." It may also revolve around defeating an "Ultimate Evil," like a competitor's products, or be used as a training tool for FPGA apprentices.
After simulating the intended events several times, one sets about translating and synthesizing every facet of the story into the target device. Of course, an author can resize the imaginary world when necessary; FPGA designers are limited by their chips and chip features, such as the amount of logic resources, types of embedded hard macros, power rails, and input/output (I/O) interfaces that actually exist in the market. If your FPGA world is part of a bigger universe, then other considerations may include the availability of development boards.
Arguably, synthesis and place-&-route are where the heroes encounter the most monsters and foes. Although the number crunching is performed via spells unleashed by FPGA design software, you -- the Creator -- need to expend significant effort beforehand to come up with suitable design constraints. Much is documented in the software reference "Spell Books," but much more must be learned through experience.
Can the sorceress reach her tower before the clock strikes twelve? What happens if the orc army captures the mountain pass before the knights arrive? Are there several ways to trigger a hidden trapdoor? Under what conditions might one threaten the (meta-)stability of the realm? Only years of accumulated knowhow can help answer these questions.
Some insights can be found in running synthesis and place-&-route builds with different tool options. Each build produces lengthy log files containing much arcane data that seems useful, but is time-consuming to analyze. In my day job, I spend quite a bit of time poring over synthesis and place-&-route results, trying to figure out better ways of summarizing them and, in the process, things like the design software options' effects on them. For example, how random are random placement seeds? How many seeds must one run before knowing with some confidence that the existing design incarnation is never going to meet timing? Or is there a correlation at all?
An esoteric view of visualizing timing values versus multiple builds |
As the above illustration so obviously implies (grin), can we get to the good place-&-route result at Build No. 19 right from the start? This is probably analogous to a writer quickly testing multiple scenarios to see which one might appeal to readers the most. Or a mage suddenly discovering a vast reserve of manna that enables him/her to selectively fire off enchantments at will to study their potency.
I would love to hear about your FPGA design quests -- the dungeons you have conquered and the enemies you have dispatched. As we embark on journeys towards FPGA feature / timing / area / power closure, I hope to contribute ideas and tools to hasten our steps and unlock hidden insights.
Thank you for putting up with all the faerie references. Hopefully no one is considering putting me to the sword at this point. Have a wonderful April Fools' Day!