r.carve accepts vector stream data as input, transforms them to
raster, and subtracts a defaultdepth+additionaldepth from a DEM. If
the given width is more than 1 cell, it will carve the stream with the
given width. With the -n flag it should eliminate all flat cells within
the stream, so when and if the water gets into the stream it will
flow. The points option generates x,y,z for points which define the stream
with the z-value of the bottom of the carved-in stream. These points
can then be combined with contours to interpolate a new DEM with
better representation of valleys.
r.carve does not create a depressionless DEM because many
depressions are in flat areas and not in the streams.