A model-specific end-to-end design methodology for resource-constrained TinyML hardware