An Embedded Hardware Description Language using Dependent Types